post type

چگونگی ساخت post type در وردپرس

همراهان همیشگی بیگ تم سلام!امیدوارم که حالتون خوب باشه و پرانرژی منظره آموزش جدید باشید.در ادامهء مباحث آموزش وردپرس در این مطلب هم یک آموزش مفید و البته ساده را برای شما آماده کردیم.تمام آموزش هایی که در بیگ تم قرارمیگیرد برای این است که شما به یک طراح سایت حرفه ای تبدیل شوید و بتوانید سایتی مطابق با نیاز و سلیقهء خودتان داشته باشید.در ادامه با ما باشید تا در مورد یکی  دیگر از قابلیت های وردپرس ، قابلیت ساخت post type بپردازیم !

چگونگی ساخت post type در وردپرس

همانطور که میدانید وردرپس یکی از سیستم هی مدیریت محتوای محبوب در بین کاربران است که علاوه بر قابلیت های متعددی که دارد,کار کردن با آن بسیار راحت است به اصطلاح کاربر پسند است.یکی از قابلیت های بسیار مفید وردپرس که از نسخهء 1,5 در سال 2005 به آن افزوده شد قابلیت  ایجاد و ذخیره محتویات مختلف (Post Type) است.در ادامهء این مطلب قصد داریم تا در این مورد بیشتر صحبت کنیم.در واقع هدف در پایان این آموزش این است که شما بتوانید محتویات مختلفی در  سایت وردرپسی خود داشته باشید.

customposttypes

 

روش کار با post type در وردپرس:

خب حالا ببینیم برای این که در سایتمان پستهایی با محتویات مختلف داشته باشیم باید به چه صورت عمل کنیم!

اینکار نیاز به یکسری مقدمات داره.شما باید ابتدا با مفاهیم زیر آشنا بشید:

  • ساخت دسته بندی سفارشی

 

قدم اول:ساختن Post Type سفارشی:

برای شروع ابتدا فایل function.php را باز کنید و کد یر را در آن قرار دهید البته باید تایپ کنید نه اینکه copy&paste کنید.

function my_custom_post_product() {
 $args = array();
 register_post_type( 'product', $args ); 
}
add_action( 'init', 'my_custom_post_product' );

بااستفاده از کد بالا شما با استفاده از تابع register_post_type یک نوع پست جدید ساختید.اما اگر به پنل پیشخوان خود برگردید هیچ اتفاقی نیفته .باید شما از دستور ‘public’ => true, استفاده کنید و آن را فراخوانی کنید.
با دستور بالا, توسط تابع register_post_type شما یک نوع پست جدید ساختید.حال پنل پیشخوان خود را مجددا بارگذاری کنید.

به مثال زیر توجه کنید:

 function my_custom_post_product() {
 $labels = array(
 'name' => _x( 'محصولات', 'post type general name' ),
 'singular_name' => _x( 'محصول', 'post type singular name' ),
 'add_new' => _x( 'افزودن جدید', 'book' ),
 'add_new_item' => __( 'افزودن محصول جدید' ),
 'edit_item' => __( 'ویرایش محصول' ),
 'new_item' => __( 'محصول جدید' ),
 'all_items' => __( 'همه محصولات' ),
 'view_item' => __( 'نمایش محصول' ),
 'search_items' => __( 'جست و جو محصول' ),
 'not_found' => __( 'محصولی یافت نشد' ),
 'not_found_in_trash' => __( 'محصولی در زباله دان یافت نشد' ),
 'parent_item_colon' => '',
 'menu_name' => 'محصولات'
 );
 $args = array(
 'labels' => $labels,
 'description' => 'ذخیره اطلاعات مربوط به محصولات',
 'public' => true,
 'menu_position' => 5,
 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
 'has_archive' => true,
 );
 register_post_type( 'product', $args );
 }
 add_action( 'init', 'my_custom_post_product' );

در ادامه قسمت های مختلف گد بالا را برای شما تشریح میکنیم:

  • برچسب ها (Labels):

با استفاده از Labels میتوانیم برچسب های مورد نیاز در را داشته باشیم. از قبیل نام Post Type و….

  • توضیحات (Description) :

شامل یک توضیح کوتاه است.

  • عمومی (Public) :

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

  • جایگاه منوها (Menu_Position) :

توسط این قسمت تعیین خواهید کرد که Post Type شما در کدام قسمت از پنل پیشخوان وردپرس قرار گیرد.

  • پشتیبانی (Supports) :

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

آرشیو (Has_Archive) :

اگر مقدار این قسمت True باشد, وردپرس یک لیست از مطالب داخل Post Type در اختیار ما قرار خواهد داد.

در نمونه بالا ما یک Post Type به نام محصولات اضافه کرده ایم.

قدم 2- ساختن دسته بندی سفارشی :

سایتی که بر اساس وردپرس ایجاد کردید از دسته بندی ها و مطالب مختلفی تشکیل شده که ممکن است بر اساس نیاز شما بخواهید دسته بندی جدید جدا از دسته هایی که موجودد ارید در Post Type داشته باشید.برای این کار از قطعه کد زیر استفاده کنید:

 


 

function my_taxonomies_product() {
 $labels = array(
 'name' => _x( 'دسته بندی محصولات', 'taxonomy general name' ),
 'singular_name' => _x( 'دسته بندی محصولات', 'taxonomy singular name' ),
 'search_items' => __( 'جست و جوی دسته بندی محصولات' ),
 'all_items' => __( 'همه دسته بندی محصولات' ),
 'parent_item' => __( 'دسته بندی محصول جاری' ),
 'parent_item_colon' => __( 'دسته بندی محصول جاری:' ),
 'edit_item' => __( 'ویرایش دسته بندی محصول' ), 
 'update_item' => __( 'تغییر دسته بندی محصول' ),
 'add_new_item' => __( 'افزودن دسته بندی جدید محصول' ),
 'new_item_name' => __( 'دسته بندی جدید محصول' ),
 'menu_name' => __( 'دسته بندی محصولات' ),
 );
 $args = array(
 'labels' => $labels,
 'hierarchical' => true,
 );
 register_taxonomy( 'product_category', 'product', $args );
}
add_action( 'init', 'my_taxonomies_product', 0 );

با استفاده از این کد شما میتوانید یک دسته بندی جدید به نام مثلا “دسته بندی محصولات” برای Post Type خود ایجاد کنید.

قدم ۳- ساختن متا باکس های سفارشی:

شاید برای شما هم پیش آمده باشد که زمانی که در حال گذاشتن پست جدید در سایت وردپرسی خود هستید به این فکر کرده باشید که خوب بود یک باکس اضافی برای اینکه اطلاعات تکمیلی را در سایت قرار دهید,وجود داشت؟
مثلا زمانی که یک مطلب در سایت قرار میدهیدو میخواهید لینک مبع را به صورت یک باکس در نوشته قرار دهید
برای اینکه این باکس را ایجاد کنید از قصعه کد زیر استفاده کنید:

add_action( 'add_meta_boxes', 'product_price_box' );
function product_price_box() {
 add_meta_box( 
 'product_price_box',
 __( 'درج منبع', 'myplugin_textdomain' ),
 'product_price_box_content',
 'product',
 'side',
 'high'
 );
}

زمانی که از این کد استفاده میکنید یک باکس جدید در صفحهء افزودن اضافه میشود به نام  “درج منبع”.
حال برای تعریف محتویات داخل باکس مثل فیلد ها و …. از کد زیر استفاده می کنیم:

function product_price_box_content( $post ) {
 wp_nonce_field( plugin_basename( __FILE__ ), 'product_price_box_content_nonce' );
 echo '<label for="product_price"></label>';
 echo '<input type="text" id="product_price" name="product_price" placeholder="enter a price" />';
}

با قرار دادن کد بالا, باکس درج منبع دارای یک فیلد میشود که میتوانیم اطلاعات را وارد کنیم.اما این امکان فراهم نمیشود که اطلاعات را ثبت کنید.
برای ثبت داده ها نیز از کد زیر استفاده می کنیم:


 

add_action( 'save_post', 'product_price_box_save' );
function product_price_box_save( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
 return;
if ( !wp_verify_nonce( $_POST['product_price_box_content_nonce'], plugin_basename( __FILE__ ) ) )
 return;
if ( 'page' == $_POST['post_type'] ) {
 if ( !current_user_can( 'edit_page', $post_id ) )
 return;
 } else {
 if ( !current_user_can( 'edit_post', $post_id ) )
 return;
 }
 $product_price = $_POST['product_price'];
 update_post_meta( $post_id, 'product_price', $product_price );
}

نمایش محتویات Post Type در قالب

خب دوستای خوبم الان وقته اینه که محتویات  Post Type را در قالب نشان.برای این منظور ه از کد زیر استفاده کنید.

 

 

<?php
$args = array( 'post_type' => '<strong>product</strong>', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
 the_title();
 echo '<div>';
the_post_thumbnail();
 echo '</div>';
endwhile;
wp_reset_query();
?>

نامی که در تابع register_post_type تعیین کرده اید را جای product قرار دهید.

نمایش محتویات متا باکس

برای اینکه محتویات متاباکس را نمایش دهید هم کد زیر را در محل مورد نظر قرار دهید.

<?php
 // If we are in a loop we can get the post ID easily
 $price = get_post_meta( get_post_ID(), 'نام باکس', true );
// To get the price of a random product we will need to know the ID
 $price = get_post_meta( $product_id, 'نام باکس', true );
?>

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

یک نظر

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

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