تعداد بازدید: 2259

نمایش پست ها بر اساس تکسونومی (tax_query)

در این مقاله کوتاه می خواهیم نحوه کوئری گرفتن از پست تایپ ها بر اساس تکسونومی ها (taxonomy) در وردپرس رو بررسی کنیم. برای این کار ما باید از شی WP_Query استفاده کنیم که اگر قصد داشته باشیم تا کوئری براساس تکسونومی بخوره باید یه سری پارامتر به اون اضافه کنیم.

پارامتر های Taxonomy

برای نمایش پست ها بر اساس تکسونومی خاص ما از پارامتر tax_query در شی WP_Query استفاده می کنیم که خودش چند پارامتر به صورت آرایه یا آرایه ای از آرایه ها می گیره.

  • relation : رابطه منطقی میان taxonomy ها زمانی که قراره بیش از یک تکسونومی رو در کوئری قرار بدیم. بطور مثال AND , OR . مقدار پیش فرض اون AND هست.
  • taxonomy : تکسونومی مورد نظر است که باید به صورت رشته ای (string) قرار بگیره و همون نامی هست که ما باهاش تکسونومی رو register کردیم با تابع register_taxonomy .
  • field : تکسونومی ها بر چه اساسی select بشن . این مورد مقادیر زیر رو می گیره :
    term_id براساس term id
    name براساس نام
    slugبراساس نامک
  • terms : مقدار term ها که می تونه به صورت عددی رشته ای یا آرایه باشه . بستگی به مقداری داره که در حالت field انتخاب کردید.
  • include_children : این که فرزندان این تکسونومی هم شامل بشه یا خیر.
    نکته مهم : زمانی که include_children برابر true باشه تمامی id های فرزندان یک تکسونومی هم در کوئری ما قرار می گیره.
  • oprator : عملگری که قراره برای شرط تکسونومی ما قراربگیره . این شرط بر روی مقدار های پرارامتر های terms اعمال می شه .  بطور مثال ما یه سری تکسونومی رو select کردیم و میخوایم پست هایی که در این تکسونومی وجود داره (IN) یا وجود نداره (NOT IN) رو نمایش بدیم.
    IN پست هایی که در این تکسونومی وجود دارند
    NOT IN پست هایی که در این تکسونومی وجود ندارند.
    AND اگر در پارامتر terms آرایه ای داده باشید به صورت پیش فرض همه پست هایی که terms اون ها در این آرایه باشه نمایش میده . اما اگر در این مورد بخواهید پست هایی رو نمایش بدید که همه term هایی که به پارامتر tersms دادید رو داشته باشند تا نمایش داده بشن باید از AND در پارامتر oprator استفاده کنید.
    EXISTS    یعنی پست هایی رو نمایش بده که حداقل یک term از term های تکسونومی taxonomy در اون ها وجود داشته باشه .
    NOT EXISTS یعنی پست هایی رو نمایش بده که هیچ یک از term هایی که تا به الان انتخاب کردیم و نداشته باشن.
    نکته مهم : زمانی که شما از این پارامتر استفاده می کنید دیگه موارد field و terms معنی پیدا نمی کنند.

Simple Taxonomy Query

اگر شما برای آرگومان های WP_Query تنها یک آرایه برای query_tax انتخاب کرده باشید میشه simple taxonomy query

<?php
$args = array(
	'post_type' => 'post',
	'tax_query' => array(
		array(
			'taxonomy' => 'people',
			'field'    => 'slug',
			'terms'    => 'bob',
		),
	),
);
$query = new WP_Query( $args );

Multiple Taxonomy Query

اگر بخواهید از چندین تکسونومی با شروط مختلف به وسیله پارامتر ralation کوئری بگیرید میشه multiple taxonomy query

<?php
$args = array(
	'post_type' => 'post',
	'tax_query' => array(
		'relation' => 'AND',
		array(
			'taxonomy' => 'movie_genre',
			'field'    => 'slug',
			'terms'    => array( 'action', 'comedy' ),
		),
		array(
			'taxonomy' => 'actor',
			'field'    => 'term_id',
			'terms'    => array( 103, 115, 206 ),
			'operator' => 'NOT IN',
		),
	),
);
$query = new WP_Query( $args );

که relation در کوئری بالا می تونه AND  یا OR باشه.

Nested Taxonomy Query

میشه کوئری های کمی پیچیده تر به صورت تو در تو نوشت . به طور مثال پست هایی که در دسته بندی quoat هستند یا پست هایی که در پست فرمت post-format-quote و دسته بندی wisdom هستند.

<?php
$args = array(
	'post_type' => 'post',
	'tax_query' => array(
		'relation' => 'OR',
		array(
			'taxonomy' => 'category',
			'field'    => 'slug',
			'terms'    => array( 'quotes' ),
		),
		array(
                        'relation' => 'AND',
                        array(
			        'taxonomy' => 'post_format',
			        'field'    => 'slug',
			        'terms'    => array( 'post-format-quote' ),
                        ),
                        array(
                                'taxonomy' => 'category',
                                'field'    => 'slug',
                                'terms'    => array( 'wisdom' ),
                        ),
		),
	),
);
$query = new WP_Query( $args );

 

 

مطالب مشابه

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Administration Menus در وردپرس

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

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Hooks: Actions and Filters

هیچ وقت هسته وردپرس رو تغییر ندید (do'nt touch the core) . بدین معنی هست که برای هک وردپرس راه دیگری غیر از تغییر...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

معرفی تابع get_posts در وردپرس

در این مقاله میخوایم که تابع get_post و get_posts رو معرفی کنیم . این تابع کار کوئری هایی که با شی WP_Query می گرفتیم ....

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای نمایش پست ها بر اساس تکسونومی (tax_query)

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

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