new-post7

آموزش ساخت متاباکس در وردپرس

آموزش ساخت متاباکس در وردپرس

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

اما متا باکس چیست؟
دوستان عزیز متاباکس ها در وب سایت های وردپرسی در واقع بخش های دلخواهی در نوشته ها و برگه های شما در وب سایت هستند که دارای فیلدهای ویژه ای برای دریافت اطلاعات هستند. برخی متاباکس های پیشفرض وردپرس عبارتند از: تصویر شاخص، دسته ها، انتشار و…. که در ادامه به توضیح کامل آن ها میپردازیم.

دوستان عزیز در برخی موارد با افزودن افزونه خاصی به وب سایت های وردپرسی مانند yoast wordpress seo ، در صفحه افزودن نوشته در قسمت پیشخوان وردپرس برگه متاباکس جدیدی اضافه می کند و یا با فعال کردن تصویر شاخص در سایت وردپرسی، متاباکس تصویر شاخص اضافه خواهد شد.که این موارد استقاده های متاباکس در وب سایت های وردپرسی هستند.

اما چه زمانی باید از متا باکس ها استفاده کرد؟
دوستان عزیز برای درک بهتر این موضوع مثالی برای شما می زنم فرض کنید می خواهید یک وب سایت فروشگاهی با استفاده از سیستم مدیریت محتوای وردپرس ایجاد کنید. شما وردپرس را نصب کرده و محصولات را از قسمت نوشته ها وارد می کنید و در این هنگام می خواهید که هنگام نوشتن محصول، فیلد های اضافه ای برای دریافت مشخصات محصول وجود داشته باشد: برای مثال فیلد رنگ، اندازه، قیمت ، گالری تصاویر و…. حال این فیلد ها وجود ندارند.چه باید کرد؟ در این صورت می توانید از متاباکس وردپرس استفاده کنید.تنها راه ممکن همین است

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

1
2
3
4
5
6
7
8
9
function Webdonya_get_custom_field( $value ) {
    global $post;
    $custom_field = get_post_meta( $post->ID, $value, true );
    if ( !empty( $custom_field ) )
        return is_array( $custom_field ) ? stripslashes_deep( $custom_field ) : stripslashes( wp_kses_decode_entities( $custom_field ) );
    return false;
}

خب دوستان عزیز قدم بعدی در انجام کار برای کد های وب سایت وردپرسی، ساخت متاباکس وردپرس می باشد.برای این منظور با قرار دادن کد زیر در وب سایت وردپرسی خود متاباکسی به نام ” نمونه متاباکس وب دنیا ” به صفحه نوشته و برگه اضافه خواهد شد. البته شما می توانید نام آن را هم تغییر دهید. کد زیر را داخل فایل functions.php در فایل های وب سایت وردپرسی خود وارد نمائید:

1
2
3
4
5
function webdonya_add_custom_meta_box() {
    add_meta_box( 'webdonya-meta-box', __( 'نمونه متاباکس وب دنیا', 'textdomain' ), 'webdonya_meta_box_output', 'post', 'normal', 'high' );  // متاباکس صفحه نوشته
    add_meta_box( 'webdonya-meta-box', __( 'نمونه متاباکس وب دنیا', 'textdomain' ), 'webdonya_meta_box_output', 'page', 'normal', 'high' );  // متاباکس صفحه برگه
}
add_action( 'add_meta_boxes', 'webdonya_add_custom_meta_box' );

خب دوستان عزیز با استفاده از کد فوق فقط متاباکس ایجاد میشود و هیچ فیلدی در آن وجود ندارد که برای استفاده از آن باید فیلد هایی را نیز به آن اضافه کرد که روند کاری به این ترتیب است که با استفاده از کد زیر میتوانید فیلد ها را به متاباکس اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
function webdonya_meta_box_output( $post ) {
    // ساخت فیلدها
    wp_nonce_field( 'my_webdonya_meta_box_nonce', 'webdonya_meta_box_nonce' ); ?>
        <label for="webdonya_textfield"><?php _e( 'عنوان', 'textdomain' ); ?>:</label>
        <input type="text" name="bigtheme_textfield" id="webdonya_textfield" value="<?php echo webdonya_get_custom_field( 'webdonya_textfield' ); ?>" size="50" />
        <label for="webdonya_textarea"><?php _e( 'متن', 'textdomain' ); ?>:</label>
        <textarea name="webdonya_textarea" id="webdonya_textarea" cols="60" rows="4"><?php echo webdonya_get_custom_field( 'webdonya_textarea' ); ?></textarea>
    <?php
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function webdonya_meta_box_save( $post_id ) {
    // جلوگیری از اجرای اسکریپت زمانی که در حال ذخیره خودکار است
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    // بررسی فعلی متاباکس
    if( !isset( $_POST['webdonya_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['webdonya_meta_box_nonce'], 'my_webdonya_meta_box_nonce' ) ) return;
    // جلوگیری از اجرای اسکریپت زمانی که کاربر اجازه ویرایش ندارد
    if( !current_user_can( 'edit_post' ) ) return;
    // ذخیره فیلد عنوان
    if( isset( $_POST['webdonya_textfield'] ) )
        update_post_meta( $post_id, 'webdonya_textfield', esc_attr( $_POST['webdonya_textfield'] ) );
    // ذخیره فیلد متن
    if( isset( $_POST['webdonya_textarea'] ) )
        update_post_meta( $post_id, 'webdonya_textarea', esc_attr( $_POST['webdonya_textarea'] ) );
}
add_action( 'save_post', 'webdonya_meta_box_save' );

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

1
add_meta_box( 'webdonya-meta-box', __( 'نمونه متاباکس بیگ تم', 'textdomain' ), 'webdonya_meta_box_output', 'نام post type', 'normal', 'high' );

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