نوشته های مرتبط در وردپرس بدون افزونه
چهارشنبه, ۳ فروردين ۱۳۹۰، ۰۲:۰۷ ق.ظ
یکی از کاربران سایت درخواست این آموزش رو کرده بودند که به دلیل سادگی و کمی وقت اضافه این آموزش رو آماده کردم تا دوستانی که نیاز دارن استفاده کنن و در ضمن می تونه یه تمرین خوب باشه برای سر و کله زدن با قالب های وردپرس. امیدوارم به دردتون بخوره. در این آموزش قصد داریم مطالب مرتبط با هر پست رو به صورت لینک در زیر پست ها به نمایش بگذاریم. برای این کار باید این آگاهی رو داشته باشید که وقتی در حال دیدن یک پست هستید در واقع فایل single.php رو فراخوانی کردید. حالا قصد دارید کجا پست های مرتبط رو نشون بدید؟
بستگی به سلیقه و قالبتون داره. من در اینجا قرار می دم:
حالا مرحله به مرحله جلو می ریم.
اولین کاری که باید بکنیم اینه که تعیین کنیم که بر اساس چه معیاری مشخص بشن این پست های مرتبط. معمولن به دو روش می شه این کار رو انجام داد:
فرض کنید که ما یه پستی در سایت ارسال کردیم در دسته بندی وردپرس. حالا پست ما به این صورت شده:
این پست در دسته ی وردپرس ارسال شده و دقت کنید دوتا پست دیگه قبل و بعدش هستن که با نام های مرتبط اول و مرتبط دوم مشخص شده اند. یعنی بعد از تموم شدن کار ما این دو مطلب باید در زیر پست در محلی که تعیین کردیم نمایش داده بشن.
حالا کار رو شروع می کنیم:
مرحله ی اول:
ابتدا یه div با آی دی my-related-post ایجاد می کنید به این صورت:
ابتدا باید دسته بندی پست رو پیدا کنیم. برای این کار می تونید از تابع :
یه حلقه ی while کارمون رو راه می ندازه :
//لینک به آدرس هر پست
} کارمون تموم شد. به همین راحتی :)
در کل کد شما باید شبیه به این باشه:
این کار خیلی کمک می کنه که وردپرس رو بشناسید.
می تونید به راحتی براش قالب طراحی کنید و تقریبن هر ایده ای رو که بخواید روی وردپرس پیاده کنید.
امیدوارم به دردتون خورده باشه
------------------------------
پ.ن:
در این آموزش ما از دسته ها برای نمایش پست های مرتبط استفاده کردیم. شما می تونید از برچسب ها هم استفاده کنید. برای این کار فقط کافیه بخش اول آموزش رو به این صورت تغییر بدید:
بستگی به سلیقه و قالبتون داره. من در اینجا قرار می دم:
حالا مرحله به مرحله جلو می ریم.
اولین کاری که باید بکنیم اینه که تعیین کنیم که بر اساس چه معیاری مشخص بشن این پست های مرتبط. معمولن به دو روش می شه این کار رو انجام داد:
- دسته بندی
- برچسب ها
فرض کنید که ما یه پستی در سایت ارسال کردیم در دسته بندی وردپرس. حالا پست ما به این صورت شده:
این پست در دسته ی وردپرس ارسال شده و دقت کنید دوتا پست دیگه قبل و بعدش هستن که با نام های مرتبط اول و مرتبط دوم مشخص شده اند. یعنی بعد از تموم شدن کار ما این دو مطلب باید در زیر پست در محلی که تعیین کردیم نمایش داده بشن.
حالا کار رو شروع می کنیم:
مرحله ی اول:
ابتدا یه div با آی دی my-related-post ایجاد می کنید به این صورت:
div دومی که گذاشتیم برای اینه که تداخلی در نمایش div ها نباشه. دقت کنید که کلاس این div هم clear هستش. می ریم به فایل style.css و این کدها رو اضافه می کنیم:
#my-related-post{مرحله ی دوم:
border: 1px solid #ccc;
padding: 10px;
background: #eee;
}
.clear{
clear: both;
margin-bottom: 30px;
}
ابتدا باید دسته بندی پست رو پیدا کنیم. برای این کار می تونید از تابع :
get_the_category()استفاده کنید. به این صورت:
$categories = get_the_category($post->ID);یه شرط برای دسته ها قرار می دیم و کار رو ادامه می دیم:
if ($categories) {حالا داخل این شرط ID های دسته ها رو داخل یک آرایه قرار می دیم به این صورت:
#ادامه ی کد
}
$category_ids = array();داخل یک حلقه تمامی ID های دسته ها رو جایگزین می کنیم:
foreach($categories as $category) $category_ids[] = $category->term_id;حالا نوبت نوشتن کوئری مونه که از پایگاه داده پست هایی رو که در دسته هامون قرار دارن نشون بدیم. برای همین باید یه سری شروط رو تعریف کنیم:
$args=array(حالا باید کوئری رو ارسال کنیم و نتیجه رو بگیریم. به این صورت:
'category__in' => $category_ids, //پست هایی که در این دسته ها قرار دارن
'post__not_in' => array($post->ID), // این بخش برای اینه که خود پست فعلی نمایش داده نشه
'showposts'=>5, // این بخش هم تعداد پست های مرتبط رو نشون می ده
'caller_get_posts'=>1 //این بخش هم برای اینه که پست هایی رو که سنجاق شدن نشون نده
);
?>
$my_query = new wp_query($args);دوباره یه شرط قرار می دیم که اگه پستی با این شرایط وجود داشت...:
if( $my_query->have_posts() ) {فرض کنید ۴ تا مطلب مرتبط پیدا شد. حالا باید یه تگ ul چاپ کنیم:
// اگر پستی وجود داشت بقیه ی کارها رو انجام می دیم
}
echo '
- ';
// هر پست مرتبط رو به عنوان یه لیست چاپ می کنیم.
// یعنی از li استفاده می کنیم
echo '
یه حلقه ی while کارمون رو راه می ندازه :
while ($my_query->have_posts()) {
$my_query->the_post();
?>
//لینک به آدرس هر پست
} کارمون تموم شد. به همین راحتی :)
در کل کد شما باید شبیه به این باشه:
استفاده از وردپرس به این صورت و ایجاد تغییرات به صورتی دستی و بدون استفاده از پلاگین ها باعث می شه بیشتر با قابلیت های وردپرس آشنا بشید و باهاش درگیر بشید.
این کار خیلی کمک می کنه که وردپرس رو بشناسید.
می تونید به راحتی براش قالب طراحی کنید و تقریبن هر ایده ای رو که بخواید روی وردپرس پیاده کنید.
امیدوارم به دردتون خورده باشه
------------------------------
پ.ن:
در این آموزش ما از دسته ها برای نمایش پست های مرتبط استفاده کردیم. شما می تونید از برچسب ها هم استفاده کنید. برای این کار فقط کافیه بخش اول آموزش رو به این صورت تغییر بدید:
$tags = wp_get_post_tags($post->ID);موفق باشید
if ($tags) {
$tag_ids = array();
foreach($tags as $tag) $tag_ids[] = $tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
//ادامه ی کد ها
?>
۹۰/۰۱/۰۳