یکی از مهمترین کارهایی که طراح پوسته باید انجام دهد نمایش دسته ها و تگ های وردپرس است . در این بخش با استفاده از توابع پوسته ی وردپرس مثل get_terms ، get_categories و … لیست دسته بندی ها و تگ ها را نشان می دهیم.
برای بدست آوردن لیست دسته بندی ها و یا تگ ها دو تابع وردپرسی وجود دارد:
- تابع get_categories – برای بدست آوردن لیست دسته ها
- تابع get_terms – برای بدست آوردن لیست (اصطلاحات) دسته ها یا تگ ها یا …
مثال زیر لیست دسته های اصلی را نشان می دهد:
$categories=get_terms( array('orderby' => 'id',
'taxonomy' =>'category',
'parent'=>0) );
ویژگی orderby دسته ها را بر اساس شناسه مرتب کرده و بر می گرداند
ویژگی taxonomy تعیین می کند که چه نوع اصطلاحاتی برگشت داده شود مثل category برای دسته بندی نوشته ها، post_tag برای تگ های نوشته ها ، download_category برای دسته بندی محصولات EDD و …
ویژگی parent ، شناسه پدر را تعیین می کند. در مثال فوق صفر است پس دسته های اصلی برگردانده خواهند شد، برای بدست آوردن دسته های زیرمجموعه یک دسته باید شناسه ی آن دسته را استفاده کنیم.
به مثال زیر دقت کنید:
$categories=get_terms( array('orderby' => 'id',
'taxonomy' =>'category',
'parent'=>200) );
foreach($categories as $value){
echo "id:" .$value->term_id;
echo "<br>name" . $value->name;
echo "<br> description " . $value->description;
echo "<br> count " .$value->category_count;
}
در این مثال ابتدا لیست دسته های زیر مجموعه ی دسته با شناسه 200 خوانده شده و سپس طی یک حلقه تکرار، مشخصات مختلف آنها چاپ شده است . می توانیم بگوییم : خروجی تابع get_terms یک آرایه از اشیا است که هر شی آن دارای خاصیت های id برای شناسه دسته، name برای نام دسته، description برای شرح دسته و count برای نگهداری تعداد نوشته های این دسته می باشد.
مثال زیر هم کاری مشابه مثال قبل انجام می دهد:
$categories = get_categories(
array(
'orderby' => 'name',
'parent' => 200,
) );
foreach($root_categories as $key => $value)
{
echo "id:" .$value->term_id;
echo "<br>name" . $value->name;
echo "<br> description " . $value->description;
echo "<br> count " .$value->category_count;
}
تنها تفاوت بین دو تابع get_categories و تابع get_terms این است که تابع get_categories فقط برای بدست آورن دسته های نوشته استفاده می شود در حالی که تابع get_terms کلی تر بوده و برای بدست آوردن دسته ها، برچسب ها و بطور کلی تاکسونومی های مختلف بکار می رود.
تابع wp_get_post_terms
این تابع برای بدست آوردن دسته بندی ها یا تگ های مربوط به نوشته دلخواه می شود و باید کد نوشته به عنوان اولین آرگومان به آن داده شود :
در مثال زیر لیست تگ های مربوط به نوشته جاری بدست آمده است:
$pid = get_the_ID();
$tag_list1 = wp_get_post_terms($pid, 'post_tag' , array("fields" => "slugs"));
پارامتر اول ، شناسه ی نوشته را تعیین می کند ، پارامتر دوم نوع تاکسونومی را تعیین می کند که می تواند post_tag یا category یا … باشد.
پارامتر سوم یک آرایه است و تعیین می کند چه مشخصاتی از تاکسونومی ها برگردانده شود، خاصیت fields برابر با slugs قرار داده شده پس لیستی از نامک های مربوط به تگ های نوشته برگردانده خواهد شد. اگر به جای slugs از مقدار ids استفاده می شود لیستی از شناسه های تگ ها برگزدانده می شد.
به عنوان مثال دیگر برای بدست آوردن لیست شناسه های دسته های مربوط به نوشته ی جاری می نویسیم:
$cats = wp_get_post_terms(get_the_ID() , 'category' , array("fields" => "ids"));
تابع the_category نیز برای چاپ کردن لیستی از لینک ها به دسته های نوشته جاری استفاده می شود.
تابع get_query_var برای بدست آوردن شناسه دسته جاری در فایل index.php استفاده می شود.
تابع get_term نیز برای بدست آوردن مشخصات یک تاکسونومی (دسته ، تگ و…) با داشتن شناسه آن استفاده می شود:
$cat_title = $term->name;
بعنوان مثال در صفحه index.php می توان قطعه کد زیر را نوشت تا در صورتی که این صفحه برای نمایش لیست نوشته های یک دسته بندی اجرا شده است مشخصات دسته جاری را بدست آورد:
if (is_category()) {
$cat_id = get_query_var('cat');
$term = get_term($cat_id,'category' );
$page_title = $term->name;
$page_dscr = $term->description;
$page_url = get_term_link($term);
}
علاوه بر توابع فوق :
- تابع is_category بررسی می کند که آیا صفحه مربوط به یک دسته بندی است یا خیر.
- تابع get_term_link یک لینک (آدرس url) برای دسته برمی گرداند.
در ادامه آموزش طراحی قالب وردپرس ، در جلسه بعد با تکنیک ها و دستوراتی برای نمایش لیست های دلخواه از نوشته ها آشنا می شوید.