رفتن به مطلب

درباره جایگزینی یک تکه کد کمک کنید


پست های پیشنهاد شده

سلام دوستان

من افزونه related post رو حذف کردم و بجاش افزونه yet another relate post رو نصب کردم

حالا توی قالبم جایی که قبلا مطالب مرتبط قرار میگرفت این کد رو داره::


<ul class="related_post">
<?php if(function_exists('wp_related_posts')) {wp_related_posts();} ?>
<p style="width: 59px">
</ul>

اما گویا شورت کد این افزونه جدید با قبلی فرق داره لذا دیگه مطالب مرتبطم رو در اونجا نشون نمیده

میخوام ببینم این کد رو چطوری باید دستکاری کنم که مطالب مرتبط رو در همون جایی که میخوام نشون بده؟

اینم اگر اشتباه نکنم شورت کد افزونه جدید هستشش:


<?php the_tags('Tagged under ') ?>
<?php related_posts() ?>

موچکر از همه

لینک به ارسال

سلام

تا وقتی کد هست افزونه چرا ؟؟!!!

از این کد استفاده کنید جهت نمایش مطالب مرتبط

این کد مطالب مرتبط رو از روی tag (برچسب) نوشته ها فیلتر میکنه و مطالبی که تگ های مشترک دارن رو بهم مرتبط می کنه...

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
}
}
?>

تو کد بالا برای تغییر نمایش تعداد پست ها کافیه که عدد 8 مقابل پارامتر showpost رو کم یا زیاد کنید

تست کنید خبر بدید

لینک به ارسال

استفاده کردم درست بود. هرچند مثل افزونه قوی عمل نمیکنه ولی بام خوبه. ممنون

لینک به ارسال

سلام

من این کد رو استفاده کردم ولی خیلی خیلی ضعیف عمل میکنه. یعنی بعضی وقتها حتی یه مطلبی هست که دو سه تا کلیدواژه مشترک هم با مطالب دیگه داره اما هیچی براش نشون نمیده

مثلا این مطلب رو بینید: http://medplant.ir/17879/%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D9%86%D9%85%D8%A7%DB%8C%D8%B4%DA%AF%D8%A7%D9%87%DB%8C-%DA%AF%DB%8C%D8%A7%D9%87%D8%A7%D9%86-%D8%AF%D8%A7%D8%B1%D9%88%DB%8C%DB%8C-%D9%88-%D8%B7%D8%A8-%D8%B3%D9%86%D8%AA

باید چکار کنم؟

لینک به ارسال

این کد فقط مطالبی را لیست می کنه که در اولین کلمه کلیدیشون مشترک باشند


$tags[0]

برای اینکه کلمات کلیدی دیگه رو هم مقایسه کنه باید


$first_tag = $tags[0]->term_id;

را تغییر دهید به


$first_tag = $tags[0]->term_name;
$second_tag = $tags[1]->term_name;
$third_tag = $tags[2]->term_name;

(مثلا)

و


'tag__in' => array($first_tag),

را حذف کنید و جاش


'tag' => array($first_tag, $second_tag, $third_tag),

را اضافه کنید

لینک به ارسال

این کد فقط مطالبی را لیست می کنه که در اولین کلمه کلیدیشون مشترک باشند


$tags[0]

برای اینکه کلمات کلیدی دیگه رو هم مقایسه کنه باید


$first_tag = $tags[0]->term_id;

را تغییر دهید به


$first_tag = $tags[0]->term_name;
$second_tag = $tags[1]->term_name;
$third_tag = $tags[2]->term_name;

(مثلا)

و


'tag__in' => array($first_tag),

را حذف کنید و جاش


'tag' => array($first_tag, $second_tag, $third_tag),

را اضافه کنید

سلام استاد عزیز

یه سوال باید جدیدی که دادین(البته تست نکردم) ولی به نظر میرسه که فقط سه تگ اول رو بررسی میکنه و آرایه تعریف شده تا 3 تا رو پوشش داده.

آیا میشه کاری کرد که تمام تگ ها رو بررسی کنه؟

لینک به ارسال

این کد را به هر تعدادی که می خواهید گسترش بدید

خب نمیشه به جای first_tag عبارت all_tags بزنیم؟

چون ممکنه پست مثلا بیست تا کلمه کلیدی داشته باشه، باید همه رو یکی یکی بزنیم؟؟

لینک به ارسال

کلمه رو که php نمی شناسه اگه جای first_tag بنویسیم کامبیز هم باز همون اتفاق می افته آرایه تگها را احضار می کنه و


$tags[0]

که مفهومش می شه خروجی ایندکس شماره صفر را می خونه و به همین ترتیب 1 و 2 ابیندکس های 1 و 2 رو می خونند

شما در مطالب مشابه می خوای ده تا مطلب احضار کنی اگر قرار باشه فصل مشترک این ده مطلب بیست تا تگ باشه که به هر پست یک نصفه می رسه از لحاظ سئو و موتورهای جستجو هم کارتون اشتباهه

وظیفه تگ ها اینه که کاربری که وارد سایتتون می شه رو راهنمایی کنه تا بتونه مطالب دلخواهش رو پیدا کنه یعنی اگر صدتا مطلب در سایت دارید کاربر بجای اینکه مجبور باشه بین صد عنوان منطلب دلخواهش رو پیدا کنه بتونه با جستجو در ده یا پنج عنوان اینکار رو بکنه حالا اگر صد مطلب شما روی هم دویست تا تگ داشته باشه قضیه برعکس می شه و کاربر بجای صد عنوان باید در دویست عنوان مطلب دلخواهش رو پیدا کنه به همین خاطر هم عملا تگ ها بی اثر می مونند و این خوشایند گوگل نیست

لینک به ارسال

کلمه رو که php نمی شناسه اگه جای first_tag بنویسیم کامبیز هم باز همون اتفاق می افته آرایه تگها را احضار می کنه و


$tags[0]

که مفهومش می شه خروجی ایندکس شماره صفر را می خونه و به همین ترتیب 1 و 2 ابیندکس های 1 و 2 رو می خونند

شما در مطالب مشابه می خوای ده تا مطلب احضار کنی اگر قرار باشه فصل مشترک این ده مطلب بیست تا تگ باشه که به هر پست یک نصفه می رسه از لحاظ سئو و موتورهای جستجو هم کارتون اشتباهه

وظیفه تگ ها اینه که کاربری که وارد سایتتون می شه رو راهنمایی کنه تا بتونه مطالب دلخواهش رو پیدا کنه یعنی اگر صدتا مطلب در سایت دارید کاربر بجای اینکه مجبور باشه بین صد عنوان منطلب دلخواهش رو پیدا کنه بتونه با جستجو در ده یا پنج عنوان اینکار رو بکنه حالا اگر صد مطلب شما روی هم دویست تا تگ داشته باشه قضیه برعکس می شه و کاربر بجای صد عنوان باید در دویست عنوان مطلب دلخواهش رو پیدا کنه به همین خاطر هم عملا تگ ها بی اثر می مونند و این خوشایند گوگل نیست

این حرف شما درسته ولی خب افزونه های اخبار مرتبط میان و تمام کلیدواژه ها رو بررسی می کنند، بعد می بینند که اشتراک بین کدوم مطالب بیشتره و به تعدادی که مشخص کرده ایم مطالب مرتبط رو نشون میدن.

ضمن اینکه وردپرس خودش میاد تگ ها رو به ترتیب حروف الفبا مرتب میکنه و این موضوع نمیتونه الزاما به معنای اهمیت تگ ها باشه. وقتی ما بدیم بر اساس اولین تگ اینکارو بکنه، اینکار دقیق صورت نمی گیره.

لینک به ارسال

افزونه ای با این شرایط که بیشترین ارتباط را بتونه تشخیص بده نداریم

افزونه این کار را می کنه

تگهای مطلب را می گیره و یک کوئری برای تمام تگهاش می نویسه تعداد پاسخش رو می شمره از ده کم می کنه و یک کوئری برای تمام تگها منهای آخرین تگ می نویسه و باز تعداد را حساب می کنه و یک کوئری دیگه برای همه تگها منهای دو تگ آخر می نویسه و اینکار را ادامه می ده تا یا تگها تموم بشند یا ده تا مطلب چیده بشند

این روش مصرف خیلی بالایی رو تو منابع داره و به همین خاطر کاربران از افزونه به کد رجوع می کنند

حالا اگه براتون مصرف منابع مهم نیست خوب شما هم از افزونه استفاده کنید (افزونه هم چیزی جز کد نیست)

لینک به ارسال

دوستان عزیز با این تفاسیر من بیخیال کد شدم. چون واقعا اون کاری رو که من میخوام نمیکنه. فقط اگر کسی میدونه، راهنمایی کنه که چه کدی رو باید در قسمتی که میخوام مطالب مرتبط نشون داده بشه بذارم؟

با تشکر

لینک به ارسال

سلام

البته دو تا نکته داره اول اینکه حتما باید در حلقه به کار برده بشه

دوم اینکه از echo استفاده نشه

لینک


If you would like to add the Related Posts display elsewhere, edit your relevant theme file (most likely something like single.php) and add the PHP code related_posts(); within The Loop where you want to display the related posts. (Make sure you don't add echo related_posts(); or you may end up with duplicates in your related posts section.)

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...