آموزش ساخت post type در وردپرس
امروز برای شما مقاله آموزش ساخت post type در وردپرس را آماده کرده ایم. در حال حاضر وردپرس جایگاه مناسبی در بین سیستم های مدیریت محتوا دارد, اما یکی از قابلیت های بسیار مفید آن توانایی در ایجاد و ذخیره محتویات مختلف (Post Type) می باشد. قابلیت post-type در سال ۲۰۰۵ و برای اولین بار در ورژن ۱٫۵ اضافه شد
در این مقاله به شما آموزش داده خواهد شد که چگونه محتویات مختلفی در سایت وردپرسی خود داشته باشید.
function my_custom_post_product() {
$args = array();
register_post_type( 'product', $args );
}
add_action( 'init', 'my_custom_post_product' );
با دستور بالا, توسط تابع register_post_type شما یک نوع پست جدید ساختید.حال پنل پیشخوان خود را مجددا بارگذاری کنید.
میبینید که اتفاقی نیفتاده است.می بایست با استفاده از دستور ‘public’ => true, آن را فعال کنیم.
به مثال زیر توجه کنید:
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 میتوانیم برچسب های مورد نیاز در را داشته باشیم. از قبیل نام Post Type و….
شامل یک توضیح مختصری می باشد.
این قسمت تعیین می کند که نوع پستی که ساخته اید فعال باشد خیر. در صورت داشتن مقدار True فعال در مقدار Fulse غیر فعال خواهد بود.
- جایگاه منوها (Menu_Position) :
توسط این قسمت تعیین خواهید کرد که Post Type شما در کدام قسمت از پنل پیشخوان وردپرس قرار گیرد.
این قسمت میتواند امکانات مختلفی را ارائه دهد. به طور پیشرفض Post Type از پنل ارسال نوشته وردپرس استفاده می کند.اما گاهی ممکن است که بخواهیم امکان تصویر شاخص را نیز اضافه کنید که توسط این بخش میتوانیم این کار را انجام دهیم.
اگر مقدار این قسمت True باشد, وردپرس یک لیست از مطالب داخل Post Type در اختیار ما قرار خواهد داد.
۲- ساختن دسته بندی سفارشی :
وبلاگ وردپرسی شما دارای دسته بندی و مطالب مختلفی است.اما گاهی ممکن است که شما نیاز به دسته بندی های جدید جدا از دسته بندی های قبلی خود در 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 در قالب
برای این کار کافیست کد زیر را در مکان مورد نظر قرار دهید:
<?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 );
?>
سخن پایانی:
شما با این مقاله آموزشی توانستید سیستم وردپرسی خود را سفارشی تر کنید.مطابق با خواسته هایتان.
پایان