قسمت ۱ – ایجاد پست تایپ / Post Type سفارشی در وردپرس

تهران آی تی / برنامــه نویــسـی / قسمت ۱ – ایجاد پست تایپ / Post Type سفارشی در وردپرس
ایجاد پست تایپ / Post Type سفارشی در وردپرس

ایجاد پست تایپ / Post Type سفارشی در وردپرس

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

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

/**
* Plugin Name: پست تایپ محصولات
* Plugin URI: http://tehranit.net/
* Author: محمدرضا احدیان
* Author URI: http://tehranit.net/
* Description: این پلاگین وظیفه افزودن پست تایپی مخصوص محصولات را بر عهده دارد
* Version: 0.1.0
* License: 0.1.0
*/
//هوک پست تایپ
add_action('init', 'tit_product_pt');
function tit_product_pt()
{
//ثبت لیبل ها
$tit_pt_product_labeles = 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' => 'محصول در سطل آشغال یافت نشد',
'featured_image' => 'تصویر محصول',
'set_featured_image' => 'انتخاب تصویر برای محصول',
'remove_featured_image' => 'حذف تصویر محصول',
'use_featured_image' => 'استفاده از تصویر برای محصول',
'archives' => 'آرشیو محصولات',
'insert_into_item' => 'TehranIT insert_into_item',
'uploaded_to_this_item' => 'TehranIT uploaded_to_this_item',
'filter_items_list' => 'TehranIT filter_items_list',
'items_list_navigation' => 'TehranIT items_list_navigation',
'items_list' => 'TehranIT items_list',
);
//ثبت مواردی که پشتیبانی میشود
$tit_pt_product_supports=array(
'title',
'editor',
'excerpt',
'author',
'thumbnail',
'comments',
'revisions',
'custom-fields',
);
//ثبت تنظیمات
$args = array(
'public' => true,
'labels' => $tit_pt_product_labeles,
'supports' => $tit_pt_product_supports,
'publicly_queryable' => true,
'exclude_from_search' => false,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'show_in_admin_bar' => true,
'menu_position' => 100,
'menu_icon' => 'dashicons-cart',
'has_archive' => true,
'rewrite' => array('slug' => 'product'),
'taxonomies' => array('post_tag', 'category'),
);
//رجیستر کردن پست تایپ
register_post_type('tit_pt_Pproduct', $args);
}

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

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

register_activation_hook(__FILE__, 'tit_activation_plugin');
function tit_activation_plugin(){
tit_product_pt();
flush_rewrite_rules();
}

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

register_deactivation_hook(__FILE__, 'tit_deactivation_plugin');
function tit_deactivation_plugin(){
flush_rewrite_rules();
}

توضیحات تنظیمات پست تایپ

public : اگر مقدار آن true باشد ما در سمت فرانت به آن دسترسی خواهیم داشت. و اگر مقدار آن false باشد ما فقط از طریق کد نویسی به آن دسترسی خواهیم داشت.

اگر مقدار public برابر با true باشد موارد زیر به صورت پیش فرض مقادیر زیر را میگیرند. البته میتوان آن ها را تغییر داد.

'exclude_from_search' => false
'publicly_queryable' => true
'show_in_nav_menus' => true
'show_ui' => true

اگر مقدار public برابر با false باشد موارد زیر به صورت پیش فرض مقادیر زیر را میگیرند. درست برعکس موارد بالا.

'exclude_from_search' => true
'publicly_queryable' => false
'show_in_nav_menus' => false
'show_ui' => false

exclude_from_search : اگر مقدار آن برابر false باشد مانند سایر نوشته ها در سرچ ظاهر میشود و اگر true باشد در سرچ وردپرس نمایش داده نمیشود.

publicly_queryable : اگر بابر با false باشد از طریق فرانت و آدرس بار دیگر نمیشود به آن دسترسی داشت یعنی در پنل ادمین وجود دارد و در سمت فرانت یا سایت دسترسی به آن مقدور نیست. مثلا مثل پست های وردپرس که نامک یا url ای دارند که بتوان به آن دسترسی داشت از طریق مرورگر، اگر false باشد این امکان غیر فعال میشود، اگر مقدار برابر true باشد دقیقا عکس عمل میکند.

show_ui : اگر مقدار آن false باشد دیگر در پنل ادمین نمایش داده نمیشود حتی در منو داشبورد مثلا زمانی که بخواهیم خودمان یک رابط کاربری برای پست تایپ مان تولید و طراحی کنیم کاربرد دارد. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند.

show_in_nav_menus : اگر مقدار آن false باشد دیگر نمیتوان از بخش منو ها آن را به فهرست یا منو ای اضافه کرد. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند اگر در بخش منو ها نیامد باید آن را از بخش تنظیمات صفحه اضافه کنید.

show_in_menu : اگر false باشد دیگر در منوی پنل ادمین نمایش داده نمیشود و فرق آن با publicly_queryable در این است که در show_in_menu فقط منو حذف شده و از طریق url میشود به آن دسترسی داشت اما در publicly_queryable از طریق url هم نمیشود به آن دسترسی داشت. و اگر مقدار برابر true باشد دقیقا عکس عمل میکند.

show_in_admin_bar : اگر مقدار آن برابر true باشد در ادمین بار وردپرس در بخش تازه ها نام آن اضافه میشود. و اگر مقدار برابر false باشد دقیقا عکس عمل میکند.

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

https://developer.wordpress.org/reference/functions/add_menu_page/

menu_icon : برای قرار دادن آیکون در منوی پنل ادمین استفاده میشود که میتوان url یک آیکون با فرمت png به آن داد و یا اینکه به لینک زیر رفته و اسم یک آیکون وردپرسی را به آن داد.

https://developer.wordpress.org/resource/dashicons

has_archive : بیان میکند که آیا برای پست تایپ شما صفحه آرشیو در نظر بگیرم یا خیر و مقدار true یا false میگیرد. آدرس آن هم میشود نام دامین / نام پست تایپ.

capability_type : شما میتوانید از قابلیتهای پیشفرض نوع post و page برای نویسنده نوع پست سفارشی جدید استفاده کنید یا با استفاده از پارامتر capabilities برای هر قابلیت وضعیتی تعیین کنید. مقدارهای قابل تعیین برای این پارامتر : page یا post میباشد.

capabilities : برای تعیین سطح دسترسی استفاده میشود مثلا فقط ادمین دسترسی داشته باشد و … .

supports : بیان میکند که پست تایپ شما از چه موارد یا سکشن هایی میتواند پشتیبانی کند. مثل تایتل، ادیتور، تصویر شاخص، کاستوم فیلد، کامنت و …. . همچنین یک آرایه میگیرد که در آن مواردی که میخواهیم ساپورت کند را می آوریم مثلا اگر بخواهیم از کامنت پشتیبانی نکند کافی است که آن را در آرایه خود نیاوریم.

'supports' => array(
'title',
'editor',
'excerpt',
'author',
'thumbnail',
'comments',
'revisions',
'custom-fields',
)

rewrite : توسط این بخش میتوانیم نام پست تایپ خود در url را تغییر دهیم. یک آرایه میگیرد و کافی است مقدار slug را در آن مقدار دهی کنیم.

taxonomies : برای افزودن دسته و برچسب به پست تایپ ها به کار میرود که هم میتوانیم از دسته و برچسب پیش فرض وردپرس استفاده کنیم هم میتوانیم برای آن با رجیستر کردن یک taxonomy جدید دسته و برچسب اختصاصی تولید کنیم.

نکته : در نامگذاری اسلاگ پست تایپ، تعداد کاراکتر نباید بیشتر از ۲۰ کاراکتر باشد.

در این بخش میتوانید کد ها را به صورت یکجا مشاهده کرده و افزونه را دانلود کنید

راهنمای خرید

خرید از تهران آی تی به صورت آنلاین بوده لینک دانلود به صورت خودکار برای شما ایمیل میشود بدیهی است که در هنگام خرید باید از ایمیل واقعی خود استفاده کنید. چنانچه نیاز به هرگونه سوال درباره محصول و یا مشاوره و کمک در خرید آنلاین داشتید از طریق ایمیل و یا شماره های تماس ارتباط برقرار کنید 09121486770 ahadian2@gmail.com

خصوصی سازی صفحات POST TYPE

صفحه آرشیو : برای ساخت یک صفحه اختصاصی برای صفحه آرشیو کافی است که در تم خود فایلی با نام archive-post type name.php بسازیم post type name در اصل همان نام پست تایپ ما است که در مثال بالا TehranIT_book بود.

archive-post type name.php

صفحه سینگل : برای ساخت یک صفحه اختصاصی برای صفحه سینگل پست تایپ خود کافی است که در تم خود فایلی با نام single-post type name.php بسازیم post type name در اصل همان نام پست تایپ ما است که در مثال بالا TehranIT_book بود.

single-post type name.php

حلقه و کوئری در پست تایپ ها

در بخش تنظیمات کوئری یا همان args میتوان نوع پست تایپ ها، کاگوری، تعداد پست و … را تنظیم کرد. حلقه باید در تگ php باشد. برای مشاهده سایر مدل های حلقه میتوان عبارت wordpress loop post type را سرچ کرد.

//تنظیمات کوئری
$args = array(
'post_type' => 'TehranIT_book',
'posts_per_page' => 3
);
//کوئری زدن
$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();

جستجو کنید

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

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با 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 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد