قسمت ۲ – کوئری در تکسانومی / Taxonomy

تهران آی تی / برنامــه نویــسـی / قسمت ۲ – کوئری در تکسانومی / Taxonomy
کوئری در تکسانومی / Taxonomy

کوئری در تکسانومی / Taxonomy

در تکسانومی ها به سه صورت میتوان کوئری زد، که در ذیل آمده است و به توضیح آنها میپردازم.

  • کوئری های تکی یا Single tax_query
  • کوئری های چند گانه یا Multiple tax_query
  • کوئری های تو در تو یا Nested tax_query

کوئری های تکی یا Single tax_query

در این مدل به یک تکسانومی خاص کار داریم و روی آن شروط خود را اعمل میکنیم به مثال زیر توجه کنید.

//تنظیمات کوئری
$args = array(
'post_type' => 'tin_pt_product',
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'tin_product_type',
'field' => 'slug', //term_id,name,slug
'terms' => 'apple',
'operator' => 'IN',//IN,NOT IN,AND,EXISTS,NOT EXISTS
'include_children' => true,
),
),
);
//کوئری زدن
$the_query = new WP_Query($args);
//حلقه
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post();
the_title();
echo '/';
}
} else {
echo 'no posts fund';
}
//ریست کردن پست دیتا
wp_reset_postdata();

WP_Query : توسط این تابع ما یک کوئری جدید از سیتم میگیریم، این تابع یک ورودی از نوع آرایه میگیرد، که توسط این آرایه میتوانیم شرط های خود را در کوئری خود لحاظ کنیم. در ادامه برخی از این شروط و تنظیمات را توضیح میدهیم

$the_query = new WP_Query($args);

post_type : همان طور که از نام آن مشخص است نوع پست تایپ یا پست تایپ ها را مشخص میکند یعنی میتوان به آن نام یک پست تایپ را دارد یا آرایه ای از پست تایپ ها را.

posts_per_page : مشخص میکند چه تعداد پست در صفحه نمایش داده شود. اگر -۱ بدهیم یعنی هر چند تا که وجود داشت را نمایش بده.

tax_query : مهم ترین بخش از این شرط هایی است که روی کوئری خود میزنیم، tax_query یک آرایه میگیرد و مواردی مثل تکسانومی ، فیلد ، ترم و … در آن مشخص میشود که در ادامه آن ها را توضیح میدهیم.

taxonomy : همان طور که از نام آن مشخص است نوع تکسانومی یا تکسانومی ها را مشخص میکند یعنی میتوان به آن نام یک تکسانومی را دارد و آرایه نمیگیرد.

field , terms : فیلد و ترم ها ارتباط مستقیم با هم دارند. فیلد ۳ مدل ورودی میتواند بگیرد term_id , name , slug

  • گر به field مقدار term_id را نسبت بدهیم در terms باید id آن term ای که مد نظر ماست را مشخص کنیم.
  • گر به field مقدار name را نسبت بدهیم در terms باید نام آن term ای که مد نظر ماست مشخص کنیم.
  • گر به field مقدار slug را نسبت بدهیم در terms باید نامک آن term ای که مد نظر ماست مشخص کنیم.

terms همجنین میتواند آرایه بگیرد، مثلا آرایه ای از id های ترم های مختلف.

'field' => 'term_id',
'terms' => '110',
//or
'field' => 'name',
'terms' => 'اپل',
//or
'field' => 'slug',
'terms' => 'nokia',

include_children : مقدار true یا false میگیرد، بیان میکند که آیا کوئری ما در برگیرنده فرزندان آن تکسانومی باشد یا خیر. به طور مثال اگر ما مقدار آن را  false کنیم در صورتی که ما یک تکسانومی  به نام گوشی موبایل داشته باشیم و این تکسانومی  زیر مجموعه ای به نام سامسونگ داشته باشد، زمانی که ما تکسانومی سامسونگ را فقط انتخاب کنیم و موبایل را انتخاب نکنیم درست است که سامسونگ زیر مجموعه موبایل است ولی دیگر نمایش داده نمیشود و در همین شرایط اگر هم دسته موبایل و هم دسته سامسونگ را انتخاب کنیم نمایش داده میشود چون در دسته موبایل که دسته اصلی هست قرار دارد.

operator : پنج مدل ورودی مختلف میگیرد که توسط آن ها میتوان شرط های جذابی روی کوئری خود اعمال کرد. که به شرح ذیل است :

  • مقدار IN : بیان میکند که مواردی را نمایش بده که در terms مشخص شده، مثلا موبایل هایی که در دسته سامسونک وجود دارد + موبایل هایی که در دسته نوکیا وجود دارد.
  • مقدار NOT IN : بیان میکند که همه موارد موجود در تکسانومی  مشخص شده را نمایش بده غیر از مواردی که در terms مشخص شده است.
  • مقدار AND : بیان میکند که مواردی را نمایش بده که در هر چند تا term ای که مشخص میکنیم موجود باشد. مثلا میگوییم محصولاتی را نمایش بده که هم موبایل باشد هم سامسونگ. نکته : چون موبایل مادر سامسونگ است ممکن است خروجی ما خالی شود در این موقع میبایست include_children را برابر false قرار دهیم.

نکته اگر بخواهیم کوئری که زدیم را به شکل کد ببینیم تا از صحت آن اگاه شویم میتوانیم، ریکوست کوئری خود را اکو کنیم مثل زیر

$the_query = new WP_Query($args);
echo $the_query->request;

  • مقدار EXISTS : زمانی که از EXISTS استفاده شود دیگر field و terms معنا و مفهوم ندارد به زبان ساده میگوید مثلا محصولاتی را نمایش بده که حداقل یک terms از تکسانومی ای که مشخص کرده ایم را داشته باشد.
  • مقدار NOT EXISTS : برعکس مورد فوق است و میگوید مثلا محصولاتی را نمایش بده که هیچ terms ای از تکسانومی ای که مشخص کرده ایم در آن موجود نباشد.

کوئری های چند گانه یا Multiple tax_query

ساختار کوئری های چند گانه یا Multiple tax_query دقیقا شبیه به کوئری های تکی یا Single tax_query میباشد فقط با یک تفاوت آن هم در مقادیری است که میتوانیم به  tax_query نسبت بدهیم. در کوئری های چند گانه در tax_query میتوانیم مقدار relation را مقدار دهی کنیم که مقدار and یا or میگیرد و سپس هر چند آرایه ای از شرط های مد نظر خود را زیر آن بیاوریم و relation با شرط and و یا or کوئری های ما را ایجاد میکند. به مثال زیر توجه کنید:

توجه : کوئری های چند گانه یا Multiple tax_query زیاد و تو در تو باعث فشار به سرور و کند شدن سایت ما میشود.

//تنظیمات کوئری
$args = array(
'post_type' => 'tin_pt_product',
'posts_per_page' => -1,
'tax_query' => array(
'relation' =>'AND', //AND,OR,
array(
'taxonomy' => 'tin_product_type',
'field' => 'slug', //term_id,name,slug
'terms' => 'apple',
),
array(
'taxonomy' => 'tin_product_color',
'field' => 'slug', //term_id,name,slug
'terms' => 'red',
),
),
);
//کوئری زدن
$the_query = new WP_Query($args);
//حلقه
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post();
the_title();
echo '/';
}
} else {
echo 'no posts fund';
}
//ریست کردن پست دیتا
wp_reset_postdata();

در مثال فوق بیان شده که برای ما محصولاتی از اپل را لیست کن که قرمز رنگ است. در هر کدام از آرایه های tax_query از یک تکسانومی متفاوت استفاده شده و این مورد داستان کوئری های چند گانه یا Multiple tax_query را جذاب میکند که یکی از تکسانومی های ما سلسله مراتبی و یکی هم غیر سلسله مراتبی است یا به زبان ساده استفاده همزمان از دسته و برچسب در شرط مورد نظر.

کوئری های تو در تو یا Nested tax_query

کوئری های تو در تو یا Nested tax_query مانند سایر کوئری های است که توضیح دادیم با این تفاوت که در یک آرایه ۲ یا چند آرایه دیگر به وسیله relation ایجاد کنیم به مثال زیر توجه کنید:

//تنظیمات کوئری
$args = array(
'post_type' => 'tin_pt_product',
'posts_per_page' => -1,
'tax_query' => array(
'relation' =>'AND', //AND,OR,
array(
'taxonomy' => 'tin_product_type',
'field' => 'slug', //term_id,name,slug
'terms' => 'apple',
),
array(
'relation' =>'OR',
array(
'taxonomy' => 'tin_product_color',
'field' => 'slug', //term_id,name,slug
'terms' => 'red',
),
array(
'taxonomy' => 'tin_product_color',
'field' => 'slug', //term_id,name,slug
'terms' => 'black',
),
),
),
);
//کوئری زدن
$the_query = new WP_Query($args);

در مثال فوق بیان کردیم که برای ما محصولاتی از برند اپل را نمایش بده (AND) که یا قرمز باشند یا (OR) مشکی.

جستجو کنید

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

دوره رایگان بنفش ASP.NET MVC

کامل ترین و بهترین دوره رایگان Asp.Net MVC 5 شامل 44 قسمت - ASP.NET یک فریمورک وب رایگان برای ساخت وب سایت ها و برنامه های کاربردی وب بر روی دات نت فریم ورک با استفاده از HTML ، CSS و جاوا اسکریپت است. از این رو تیم تحقیقاتی تهران آی تی به این نتیجه رسید که دوره رایگان و کاربردی در خصوص ASP.NET MVC 5 منتشر کند. این دوره آموزشی رایگان با عشق و علاقه برای شما پژوهندگان علم تولید شده است.

ورود به دوره رایگان بنفش ASP.NET MVC

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

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