نمایش term های یک پست در وردپرس

term در وردپرس توسعه وردپرس

قبلا در پست مربوط به آشنایی با term ها در وردپرس در مورد نمایش لیست پست ها با term خاص صحبت نمودیم و گفتیم که تابع get_objects_in_term می تواند به راحتی این کار را برای ما انجام دهد و آیدی تمام مطالب را به صورت یک آرایه برگرداند و از آن پس می توانیم به راحتی با شی wp_query یا هر روش دیگر آنها را نمایش دهیم.

در این پست قرار است در مورد نحوه بدست آوردن و نمایش term های یک پست، راه های مختلفی را معرفی کنیم. معمولا term های یک پست در موارد مختلفی قابل نمایش است. مثلا در خلاصه مطلب (در سایت های فیلم و سریال خیلی استفاده می شود.) یا در صفحه مطلب می توانیم لیست آن ها را نمایش دهیم تا کاربران به سایر مطالب با آن term دسترسی داشته باشند.

 

تابع wp_get_object_terms برای دریافت کل term های پست

این تابع به این صورت کار می کند که آیدی مطلب (مطالب) و همچنین تکزانامی (های) موردنظر را می گیرد و اگر term موجود بود، آرایه ای از آبجکت های آن term ها را بر می گرداند. همچنین اگر taxonomy وارد شده معتبر نباشد، شی wp_error برگردانده می شود.

 

wp_get_object_terms( int|array $object_ids, string|array $taxonomies, string|array $args )

برای مثال کلیه term های تکزانامی category پست فعلی را به این صورت می توانیم دریافت می کنیم:

 


//input
$terms = wp_get_object_terms( 3363, 'category' );
print_r($terms)

//output
Array
(
   [0] => WP_Term Object
      (
         [term_id] => 131
         [name] => آموزش وردپرس
         [slug] => %d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%88%d8%b1%d8%af%d9%be%d8%b1%d8%b3
         [term_group] => 0
         [term_taxonomy_id] => 131
         [taxonomy] => category
         [description] => dasdas
         [parent] => 0
         [count] => 1
         [filter] => raw
      )

)

با یک forech ساده می توانیم اطلاعات آبجکت های term ها را در صفحه چاپ کنیم. مثلا برای نمایش نام کل term ها کافیست از دستور زیر استفاده کنیم:

 


$terms = wp_get_object_terms( 3363, 'category' );
foreach( $terms as $term ){
   echo $term->name . '، ';
}

فرض کنیم پست ما دارای چند تکزانامی است و میخواهیم آنها را به صورت تفکیک شده در صفحه نشان دهیم (مثلا تکزانامی های category و post_tag). در اینصورت نیاز نیست چندبار این تابع را فراخوانی کنیم.

 


$terms = wp_get_object_terms( 89, ['category', 'post_tag'] );

//show category terms
foreach( $terms as $term ){
   if( $term->taxonomy == 'category' ){
   echo $term->name . ', ';
   }
}

//show post_tag terms
foreach( $terms as $term ){
   if( $term->taxonomy == 'post_tag' ){
   echo $term->name . ', ';
   }
}

پارامتر سوم این تابع جایی است که به ما امکان بیشتری برای شخصی سازی و فیلتر خروجی می دهد. می توانیم آرایه ای با مشخصات زیر را در آن وارد نماییم: (پارامترهای مهم آورده شده است)

 


array(
   'orderby'           => 'count', //
   'order'             => 'ASC', //
   'include'           => [], 
   'exclude'           => [],
   'exclude_tree'      => [], //exclude term(s) and his child(s)
   'number'            => '', //count returned values
   'fields'            => 'all', //supported values => all, all_with_object_id, object_id, ids, tt_ids, id=>parent, names, count, id=>name, id=>slug
   'name'              => '', //
   'slug'              => '', //
   'term_taxonomy_id'  => '', //
   'name__like'        => '', //
   'description__like' => '', //
   'child_of'          => '', //child parent id
   'parent'            => '', //first parent id
   'childless'         => false, //
);

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *