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

توابع مرتبط با taxonomy (قسمت دوم)

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

get term

این تابع یک term رو برای شما بر می گردونه به هر شکلی که دوست داشته باشید (شی یا آرایه).

<?php get_term( $term, $taxonomy, $output, $filter ) ?>

آرگومان های این تابع:

  • $term : این پارامتر می تونه integer/object دریافت کنه که میشه id یا شی مربوطه به term.
  • $taxonomy : تکسونومی مورد نظر.
  • $output : که می تونه مقادیر زیر رو بگیره :
    OBJECT , ARRAY_A , ARRAY_N

get_term_by

این تابع امکان بیشتری برای گرفتن term داره و می تونه به وسیله id , slug , name برای شما term رو بگیره.

<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?>

آرگومان های این تابع:

  • $field : این پارامتر همون معیاری هست که شما بر اساس اون term رو میگیرید که می تونه مقادیر زیر رو بگیره:
    id‘, ‘slug‘, ‘name‘, ‘term_taxonomy_id
  • $value : مقدار با توجه به فیلدی که در پارامتر قبلی تعیین کردیم.
  • $output : که می تونه مقادیر زیر رو بگیره :
    OBJECT , ARRAY_A , ARRAY_N

get_the_terms

این تابع term های یک تکسونومی رو بر اساس پست پیدا می کنه. این تابع رو میشه هم به پست ها و هم به taxonomy ها نسبت داد!

<?php get_the_terms( int|object $post, string $taxonomy ); ?>

get_terms

خوب رسیدیم به تابع get_terms که بسیار جامع تر و کلی تر از توابع قبل هست.

<?php get_terms($args); ?>

پارامتر های این تابع به قرار زیر است:

<?php
$args = array(
    'taxonomy'      => '',
    'orderby'       => '',
    'order'         => '',
    'hide_empty'    => '',
    'include'       => '',
    'exclude_tree'  => '',
    'include_tree'  => '',
    'number'        => '',
    'offset'        => '',
    'fields'        => '',
    'name'          => '',
    'slug'          => '',
    'hierarchical'  => '',
    'description_like' => '',
    'pad_count'     => '',
    'child_of'      => '',
    'parent'        => '',
    'childless'     => '',
);
  • taxonomy : تکسونومی مورد نظر
  • orderby : معیار مرتب سازی دسته بندی ها در select box که می تواند بر اساس id , name , slug , count باشد. منظور از count تعداد پست های مرتبط با هر دسته بندی است.
  • order : مرتب سازی به صورت صعودی یا نزولی باشد . ASC,DES
  • hide_empty : مخفی کردن مواردی که پستی مرتبط با آن ها وجود ندارد.
  • include : این پارامتر می تونه (string/array)  بگیره . اگر string بود باید id ها به وسیله , از هم جدا بشن . بهتره برای سریع تر شدن کوئری بهشون آرایه بدید. کاربردش هم شامل شدن id های دسته بندی .
  • exclude : این پارامتر می تونه (string/array)  بگیره . اگر string بود باید id ها به وسیله , از هم جدا بشن . بهتره برای سریع تر شدن کوئری بهشون آرایه بدید. کاربردش هم شامل نشدن id های دسته بندی .
  • exclude_tree : این پارامتر کلا یک شاخه رو حذف می کنه . یعنی شما یه id بهش میدید و اون خود term به همراه فرزندانش رو حذف می کنه.
  • number : این پارامتر مشخص می کنه که چه تعداد از term ها رو برگردونه. معادل limit در mysql .
  • offset : بر اساس اون ترتیبی که رعایت کردید چه مقدار افست از بالا بگیره . تا الان یه کوئری زدید که یه سری ردیف رو از جدول برای شما بر می گردونه حالا با این پارامتر می تونید بهش افست بدید . معادل همون offset در mysql.
  • fields : این پارامتر نوع خروجی این تابع رو بر اساس یه سری قالب ها تعیین می کنه . تا الان این تابع خروجی رو به صورت object بر می گردوند . شما می تونید این خروجی رو تغییر بدید. مقادیری که این پارامتر می گیره به شکل زیر هست.
    all , ids , id=>parent , names , count , id=>name , id=>slug
    نکته : اگر مقدار count رو وارد کنید به شما میگه کلا اون کوئری که زدید چند تا خروجی داره . پس خروجی میشه یه عدد که تعداد term هاست.
  • name : نام term مورد نظر برای برگردوندن شی اون term.
  • slug : مقدار نامک یا slug
  • description_like : توضیحات مربوط به term این مورد از like در mysql استفاده می کند.
  • pad_count : مثالی رو در نظر بگیرید برای دسته بندی لینوکس و ابونتو که اوبونتو فرزند دسته بندی لینوکس هست. خوب اگر ما بخواهیم تعداد پست های دسته بندی لینوکس رو در نظر داشته باشیم قطعا از نظر ماهیتی دسته بندی اوبونتو هم جز این موارد به حساب میاد و ما وقتی تیک دسته فرزند رو بزنیم قطعا تیک دسته والد رو زدیم. حالا اگر تیک دسته والد رو نزده باشیم آیا برای ما جز والد حساب کنه یا خیر . این پارامتر صرفا برای تعداد کاربرد داره.
  • child_of : فرزندان term رو بر میگردونه . بر اساس id .
  • parent : بر اساس والد term ها رو بر می گردونه . مشابه مورد بالایی هست .
  • childless : میگه اونهایی رو برگردون که فرزند نداشته باشن یا به عبارتی والد نباشن.

تفاوت میان child_of و parent

تفاوت parent , child_of در این است که parent یک لایه از فرزندان را می آورد اما child_of تمامی فرزندان را لیست می کند . به این ترتیب است که می توان کلیه فرزندان و نوه ها و نتیجه ها و ندیده ها از term داده شده را دریافت کنید و این در صورتی است که با parent تنها می توان لیست فرزندان را دریافت کرد.

$query_args = apply_filters('wore_admin_hotel_category_list_query_args',[                        
  'taxonomy' => HotelCategoryModel::taxonomy ,                                                                                                                                     
  'hide_empty'=>false,                                                                         
  'number' => $number,                                                                         
  'offset' => $offset,                                                                         
  'orderby' => 'ID',                                                                           
  'order'=>'DESC',                             
   'child_of' => $parent_id,                                                
]);                                                                                              
$hotel_category_terms = get_terms($query_args;
  • در مورد child_of می توان گفت که offset , number روی آن ها برای اعمال pagination روی تعداد نوه نتیجه ندیده … می باشد و در صورتی که روی parent باشد تنها روی فرزندان می باشد.
  • به عبارت دیگری می توان گفت که child_of به صورت کامل تری تعداد را بر می گرداند تا parent و به زبانی دیگر child_of در برگیرنده parent هم است
  • هیچ گاه این دو پارامتر را با هم استفاده نکنید – child_of و parent را با هم استفاده نکنید.

 

مطالب مشابه

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

Rest API در وردپرس

سرور ها می توانند پاسخ مناسب به درخواست ها بدهند. درخواست ها و پاسخ یک سری ویژگی ها و داده همراه خود دارند. کدی که در...

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

تکسونومی ها (taxonomy) در وردپرس

در این مقاله قصد داریم تا دسته بندی ها و تگ ها یا به صورت کلی تر taxonomy ها رو در وردپرس بررسی کنیم و پارامتر های تابع...

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

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

2 دیدگاه برای توابع مرتبط با taxonomy (قسمت دوم)

  1. سلام دوست عزیز من دارم ووردپرس یاد میگیرم .و الان تازه تکسونومی یاد گرفتم خیلی جاها سوالاتی برام پیش میاد میتونم از شما کمک بگیرم.مثلا میتونم termها رو مثل دسته های منو در صفحه اول index بیارم .اگه راه داره راهنماییم کنین ممنون

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

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