دوره مجازی قالب وردپرس (جلسه 33):پیاده سازی custom taxonomy

دسته بندی: وردپرس
زمان مطالعه: 1 دقیقه
۰۵ آذر ۱۳۹۴

به نا خدا و سلام. در خدمت شما هستیم با جلسه 33 ام از دوره مجازی آموزش طراحی قالب حرفه ای وردپرس.در این جلسه قصد داریم بخش taxonomy وردپرس رو آموزش بدیم.taxonomy وردپرس کمک میکنه تا مطالب و محتواهای وب سایت رو به صورت خیلی منظم تری در قالب نشون بدیم و اینکه کاربر نهایی به راحتی بتونه مطالب مورد نظرش رو پیدا کنه. در این جلسه کاملا جزئیات پیاده سازی این موارد رو آموزش میدیم.

 

در این حلسه خواهیم دید :

  • مفاهیم taxonomy و کاربرد آن
  • مروری برای طیقه بندی های پیش فرض وردپرس
  • بررسی آرگومان های لازم برای تابع register_taxonomy
  • ایجاد taxonomy سفارشی برای قالب
:: توجه

این مطلب یک جلسه از آموزش طراحی قالب وردپرس می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش طراحی قالب وردپرس

چه امتیازی به این مقاله می دید؟
نویسنده
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

جلسات دوره

نظرات کاربران

حمید درویش

سلام و خسته نباشید
در مورد همین سایت سون لرن سوال داشتم
الان ما یه صفحه داریم به آدرس زیر:
www.7learn.com/course
که داخلش تمام دوره ها به صورت جداگانه آورده شده. پیاده سازی این بخش به چه صورته؟ آیا مثلا post type بنام course ساخته شده یا چیزه دیگه ؟
اسم فایل php که در قالب باید ساخته بشه به چه صورته؟

Hosein Tahmasbi

مشکل حل شد، مشکل از گوتنبرگ هستش. اگر برای پشتیبانی از گوتنبرگ show_in_rest را به custom post type اضافه کردین باید همین را به custom taxonomy هم اضافه کنیم.

Hosein Tahmasbi

سلام استاد خسته نباشید
من یه custom post type ایجاد کردم به نام Disease. و یه custom taxonomy ایجاد کردم به نام Speciality. ولی متاسفانه باکس speciality در هنگام افزودن مطلب جدید به disease نمایش داده نمیشه. این کدهایی هست که توی function قالب اضافه کردم:

//Disease Custom Post Type

add_action(‘init’,’add_disease_custom_post_type’);
    function add_disease_custom_post_type(){
        $labels = array(
		‘name’               => ‘بیماری ها’,
		‘singular_name’      => ‘بیماری’,
		‘menu_name’          => ‘بیماری ها’,
		‘name_admin_bar’     => ‘بیماری ها’,
		‘add_new’            => ‘افزودن’,
		‘add_new_item’       => ‘افزودن بیماری جدید’,
		‘new_item’           => ‘بیماری جدید’,
		‘edit_item’          => ‘ویرایش بیماری’,
		‘view_item’          => ‘مشاهده بیماری’,
		‘all_items’          => ‘همه بیماری ها’,
		‘search_items’       => ‘جستجو در بیماری ها’,
		‘parent_item_colon’  => ‘بیماری مادر:’,
		‘not_found’          => ‘بیماری یافت نشد’,
		‘not_found_in_trash’ => ‘بیماری در زباله دان یافت نشد’,
	);

	$args = array(
		‘labels’             => $labels,
		‘description’        => ‘بیماری های پزشکی’,
		‘public’             => true,
		‘publicly_queryable’ => true,
		‘show_ui’            => true,
		‘show_in_menu’       => true,
		‘query_var’          => true,
		‘rewrite’            => array( ‘slug’ => ‘disease’ ),
        ‘capability_type’    => ‘post’,
        ‘menu_icon’          => ‘dashicons-media-text’,
		‘has_archive’        => true,
        ‘hierarchical’       => false,
        ‘taxonomies’         => array(‘speciality’, ‘post_tag’),
		‘menu_position’      => 5,
		‘supports’           => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’, ‘post-formats’, ‘custom-fields’ ),
		‘show_in_rest’ => true
	);

	register_post_type( ‘disease’, $args );
}


//Speciality Category
add_action( ‘init’, ‘add_speciality_custom_taxonomy’, 0 );
function add_speciality_custom_taxonomy() {
   
    $labels = array(
        ‘name’              => _x( ‘دسته بندی بیماری ها’, ‘taxonomy general name’, ‘textdomain’ ),
        ‘singular_name’     => _x( ‘دسته بندی بیماری’, ‘taxonomy singular name’, ‘textdomain’ ),
        ‘search_items’      => __( ‘جستجو’, ‘textdomain’ ),
        ‘all_items’         => __( ‘همه دسته بندی ها’, ‘textdomain’ ),
        ‘parent_item’       => __( ‘دسته بندی مادر’, ‘textdomain’ ),
        ‘parent_item_colon’ => __( ‘دسته بندی مادر:’, ‘textdomain’ ),
        ‘edit_item’         => __( ‘ویرایش دسته بندی’, ‘textdomain’ ),
        ‘update_item’       => __( ‘بروزرسانی’, ‘textdomain’ ),
        ‘add_new_item’      => __( ‘افزودن دسته جدید’, ‘textdomain’ ),
        ‘new_item_name’     => __( ‘نام دسته جدید’, ‘textdomain’ ),
        ‘menu_name’         => __( ‘دسته بندی بیماری ها’, ‘textdomain’ ),
    );

    $args = array(
        ‘hierarchical’      => true,
        ‘labels’            => $labels,
        ‘show_ui’           => true,
        ‘show_admin_column’ => true,
        ‘query_var’         => true,
        ‘rewrite’           => array( ‘slug’ => ‘speciality’ ),
    );

    register_taxonomy( ‘speciality’, array( ‘disease’), $args );
}
Siavash Jahanpur

سلام استاد ، حال شما خوبه ؟ خسته نباشید .
قربان بنده یک سوال داشتم در مورد کوئری هایی که از custom post type گرفته میشه .
من یک custom post type به نام portfolio دارم که این custom post type دو تا category داره به نام های کودکانه با( slug=childish) و رسمی با (slug=formal) .
من تو صفحه اول میخوام یک بخش فقط از custom post type portfolio و پست های کودکانه و در بخش دیگر فقط از custom post type portfolio و پست های رسمی پست ها رو نمایش بدم .
تو سایت codex هرچی گشتم به نتیجه نرسیدم . ممنون میشم راهنمایی کنید . با تشکر

کیوان علی محمدی

سلام می تونید از WP_Query استفاده کنید که از پست تایپ سفارشی و مثلا فلان دسته بندی فقط مطالب رو نشون بده.

سبحان توکلی

سلام جناب علی محمدی
چطوری میتونم زیردسته های یک دسته خاص رو بگیرم؟
با تشکر

کیوان علی محمدی

سلام می تونید از get_categories استفاده کنید.

علی رشیدی

استاد میشه جواب بدید
بد جوری به مشکل خوردم

علی رشیدی

یک صفحه داریم که کلی دسته بندی داره که که هر روز چند مطلب به این دسته بندی ها اضافه می شه.
وقتی کاربر وارد یکی از این دسته بندی ها میشه، کلیه مطالب بر اساس روز تاریخ انتشار هم دسته بندی شده.
و کاربر بتونه مطالب یک دسته بندی خاص رو برای یک روز معین ببینه.

علی رشیدی

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

علی رشیدی

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

کیوان علی محمدی

اگه امکانش هست بیشتر توضیح بدین.از اول چه پروسه ای مد نظرتون هست.

کیوان علی محمدی

سلام. قصد دارین دسته بندی ها بر اساس تاریخ در کجا مرتب بشه؟

hadi ala

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

کیوان علی محمدی

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

boyit

سلام استاد خسته نباشید
در قسمت دسته در بخش نوشته ها برای هر دسته و یا زیر دسته کافی بود فایل category.php رو طراحی کنیم تا لیستی از مطالب اون دسته یا زیر دسته نمایش بده
الان بنده یه custom post با دوتا custom taxonomy ساختم برای اینکه حالتی شبیه به حالت پیش فرض بالا ایجاد کنیم باید چه صفحاتی و به چه صورتی ایجاد بشه ؟ مثلا custom post با اسم book و taxonomy ای با عنوان author_book
ممنون میشم جواب بدید استاد

کیوان علی محمدی

سلام. برای author_book شما فایل taxonomy-author_book.php رو باید به قالب اضافه کنید.برای book هم باید صفحات archive-book.php و single-book.php رو به قالب اضافه کنید.

کیوان علی محمدی

سلام دوست عزیز فایل author.php به قالبتون اضافه شده؟ لینک به صفحه نویسنده به صورت صحیح قرار گرفته؟

کیوان علی محمدی

نتیجه کوئری رو هاست var_dump کنید بررسی کنید.

mostafash

استاد من برای نمایش یک دسته خاص از اون پست سفارشی خودم از این کوئری استفاده کردم
‘job_listing’,
‘job_listing_category’ => ‘komak’,
‘order’ => ‘DESC’,’posts_per_page’ => 8,);
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
همین الان این کوئری توی لوکال هاست داره نمایش میده اطلاعات رو،فقط رو هاست اصلی اطلاعات اون دسته خاص رو نشون نمیده وهمه اطلاعات رو داره نشون میده

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

شما هم چنان می توانید سوالات خود را در این قسمت بپرسید اما اولویت پاسخ گویی با دانشجویانی است که بازه پشتیبانی فعال دارند.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل