در این بخش قصد داریم به آموزش ۲ تابع کاربردی wp_list_categories و wp_dropdown_categories با مثال و توضیحات کامل بپردازیم. این ۲ تابع هم در تکسانومی های پیش فرض وردپرسی کار میکند و هم در تکسانومی هایی که به صورت سفارشی ایجاد میکنیم. کار این توابع این است که تکسانومی های ما را به صورت دراپ دان و یا لیست نمایش میدهد پس با ما همراه باشید.
این ۲ تابع آرایه ای از تنظیمات میگیرند که مقادیر آنها با هم مشترک است برای همین در انتها همه آنها را توضیح میدهیم و مقادیر را از هم تفکیک نمیکنیم.
وظیفه این تابع ایجاد یک dropdown از کتگوری ها و یا بهتر است بگوییم ترم های یک تکسانومی است که هم در تکسانومی های پیش فرض وردپرسی کار میکند و هم در تکسانومی هایی که به صورت سفارشی ایجاد میکنیم. این تابع آرایه ای از تنظیمات به عنوان ورودی میگیرد و خروجی آن یک دراپ دان است. نمونه کد wp_dropdown_categories را در زیر مشاهده کنید.
$args = array(
'show_option_all' => 'همه',
'show_option_none' => 'هیچکدام',
'option_none_value' => '-1',
'orderby' => 'name', //id,name,slug,count
'order' => 'ASC',
'show_count' => false,
'hide_empty' => false,
'child_of' => 0,
'exclude' => '',
'include' => '',
'echo' => false,
'selected' => 6,
'hierarchical' => true,
'name' => 'cat',
'id' => 'test',
'class' => 'postform',
'depth' => 0,
'tab_index' => 10,
'taxonomy' => 'category',
'hide_if_empty' => false,
'value_field' => 'term_id',
);
$drop=wp_dropdown_categories( $args );
echo $drop;
این تابع دقیقا شبیه تابع بالا است با این تفاوت که وظیفه این تابع ایجاد یک لیست از کتگوری ها و یا بهتر است بگوییم ترم های یک تکسانومی است که هم در تکسانومی های پیش فرض وردپرسی کار میکند و هم در تکسانومی هایی که به صورت سفارشی ایجاد میکنیم. این تابع آرایه ای از تنظیمات به عنوان ورودی میگیرد و خروجی آن یک لیست است. نمونه کد wp_list_categories را در زیر مشاهده کنید.
echo "<ul>";
$args = array(
'show_option_all' => '',
'show_option_none' => '',
'orderby' => 'ID', //id,name,slug,count
'order' => 'ASC',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'exclude' => '',
'exclude_tree' => '',
'include' => '',
'echo' => 1,
'current_category' => '',
'hierarchical' => 1,
'title_li' => '',
'hide_title_if_empty'=> false,
'depth' => 0,
'style' => 'list',
'taxonomy' => 'category',
'separator' => '',
);
wp_list_categories( $args );
echo "</ul>";
show_option_all : به صورت پیش فرض تهی میباشد و اگر مقداری در آن ست کنید گزینه ای به دراپ دان ما اضافه میکند برای انتخاب همه گزینه های دراپ دان، فقط کافی است عبارتی که میخواهیم نمایش داده شود را در این بخش بنویسیم مثلا بنویسیم همه موارد. و اگر از دراپ دان اینسپکت بگیریم گزینه همه موارد value ای برابر با ۰ را بر میگرداند.
<option value="0">همه</option>
show_option_none و option_none_value : این دو با هم در ارتباط میباشد و مانند مقدار بالایی یعنی show_option_all میباشد با این تفاوت که show_option_none گزینه ای به دراپ دان ما اضافه میکند که کاربر اگر نخواست هیچ مقداری را انتخاب کند این گزینه را انتخاب کند. پس کافی است که عبارتی که دوست داریم را به show_option_none بدهیم مثلا عبارت هیچ کدام. و در option_none_value باید مقداری که میخواهیم دراپ دان آن را برگرداند وارد کنیم، مثلا عدد -۱ را وارد میکنیم.
<option value="-1">هیچکدام</option>
orderby : میتواند لیست یا دراپ دان ما را بر اساس مواردی مثل id, name, slug, count مرتب کند. مثلا اگر orderby را برابر با count قرار دهیم لیست یا دراپ دان ما را بر اساس تعداد نوشته مرتب مبکند.
order : توسط orderby میتوانستیم مدل مرتب سازی لیست خود را مشخص کنیم و توسط order میتوانیم صعودی بودن یا نزولی بودن آن را مشخص کنیم. و دو مقدار ASC و یا DESC میتواند دریافت کند.
show_count : تعداد پست های هر دسته را جلوی آن دسته چاپ میکند و میتواند مقدار true یا false و همچنین ۰ یا ۱ بگیرد.
hide_empty : مشخص میکند که اگر در دسته ای پستی وجود نداشت آن را چاپ کند یا خیر و مقدار true یا false میگیرد.
child_of : در صورتی که بخواهیم فقط فرزندان یک دسته خواص را نمایش دهیم، کافی است که child_of را برابر با ID آن دسته قرار دهیم، در این صورت فقط فرزندان آن دسته نمایش داده میشود.
exclude :هم میتواند یک ID بگیرد هم آرایه ای از ID ها و کار آن این است که ID های مشخص شده را نمایش ندهد.
exclude_tree : فقط در لیست ها کاربرد دارد، یک دسته را همراه با فرزندان آن حذف میکند و میتواند یک ID دسته و یا آرایه ای از ID های دسته ها را برای حذف بگیرد.
include : دقیقا برعکس exclude میباشد و تنها مواردی را نمایش میدهد که ID آن برای include تعریف کرده باشیم و هم میتواند یک ID بگیرد هم آرایه ای از ID ها.
echo : مقدار true یا false میگیرد و مشخص میکند که لیست یا دراپ دان ما چاپ بشود یا خیر. میتوانیم مقدار echo را برابر با false قرار دهیم و آن را داخل یک متغییر بریزیم و هرجا که دوست داشتیم چاپ کنیم.
$drop=wp_dropdown_categories( $args );
echo $drop;
selected : مشخص میکند چه دسته ای سلکت شده باشد، یعنی زمانی که کاربر هنوز دراپ دان را باز نکرده خود دراپ دان کدام گزینه را سلکت کرده باشد. برای انتخاب selected کافی است که selected را برابر با ID دسته مورد نظر قرار دهیم.
hierarchical : مقدار true یا false میگیرد و مشخص میکند که در لیست یا دراپ دان ما سلسله مراتب رعایت شود یا خیر. مثلا فرزندان را مقداری جلو تر از والد ها نمایش میدهد. مثلا در لیست که از تگ UL و li استفاده میشود برای فرزندان یک ul جدید در li ها ایجاد میکند تا سلسله مراتب به درستی نمایش داده شود.
name و id و class و tab_index : اتربیوت هایی میباشند که میتوان در تگ select که مخصوص دراپ دان است ست کرد. از این مقادیر برای استایل دهی و برنامه تویسی میتوان استفاده کرد.
<select name="cat" id="test" class="postform" tabindex="10">
<option value="0">همه</option>
...
</select>
depth : مشخص میکند تا چه سطحی از سلسله مراتب را به ما نمایش بدهد، منظور والد، فرزند، نوه و …. است. اگر برابر با ۰ باشد تا آخرین سطح نمایش داده میشود و یا میتوانیم سطح را با یک عدد مشخص کنیم.
taxonomy : اگر بخواهیم تکسانومی های پیش فرض وردپرس را نمایش دهیم از عبارت category استفاده میکنیم و اگر بخواهیم تکسانومی های سفارشی که خودمان ایجاد کردیم را نمایش دهیم کافی است نام تکسانومی خود را در این بخش وارد کنیم.
hide_if_empty : اگر دراپ دان یا لیست ما خالی باشد یعنی گزینه ای برای نمایش دادن نداشته باشد و گزینه hide_if_empty برابر با true باشد آنگاه دراپ دان یا لیست ما مخفی میشود و نمایش داده نمیشود.
value_field : مقادیری مثل term_id یا name یا slug و … میتواند بگبرد و هر موردی که انتخاب شود در اتربیوت value مربوط به تک select و option به ما برمیگردد. در مثال زیر از term_id استفاده شده و در value آی دی مربوط به دسته کتاب ها چاپ شده است
<option class="level-0" value="2">کتاب ها</option>
use_desc_for_title : فقط در لیست ها کاربرد دارد و وظیفه ایجاد اتربیوت تایتل برای تگ های a href … را برعهده دارد. مقدار تایتل را از بخش توضیحات دسته و کتگوری برداشته و در اتربیوت تایتل قرار میدهد. بدیهی است که اگر فیلد توضیحات مربوط به دسته ها خالی باشد تایتلی ست نمیشود.
current_category : فقط در لیست ها کاربرد دارد و وظیفه ایجاد یک کلاس css دارد که به صورت رزرو شده نام آن current-cat میباشد. current_category یک ID از یک دسته میگیرد و به li آن دسته کلاس current-cat را اضافه میکند.
<li class="cat-item cat-item-2 current-cat">
title_li : فقط در لیست ها کاربرد دارد و وظیفه ایجاد یک تایتل را بر عهده دارد آن هم در یک تگ li ، و یک مقدار استرینگی میگیرد.
hide_title_if_empty : مقدار true و یا false میگیرد. شرطی است برای title_li و میگوید اگر لیست ما والد و یا فرزندی نداشت آیا title_li نمایش داده بشود و یا خیر.
style : به صورت پیش فرض مقدار list دارد و در این حالت تگ های a را داخل تگ li قرار میدهد. اگر مقدار style را خالی بزاریم فقظ تگ های a نمایش داده میشود.
separator : اگر اگر مقدار style را خالی بزاریم فقط تگ های a نمایش داده میشود و میتوانیم برای اینکه بین این تگ ها مقداری مثل ویرگول و یا حتی تگ های html قرار دهیم از separator استفاده کنیم و آن مقدار را به separator نسبت دهیم.