معرفی و آموزش ساخت پست تایپ سفارشی در وردپرس ، متاباکس

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

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

اما متا باکس چیست؟

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

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

اما چه زمانی باید از متا باکس ها استفاده کرد؟

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

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

function bigtheme_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 در فایل های وب سایت وردپرسی خود وارد نمائید:

function bigtheme_add_custom_meta_box() {
	add_meta_box( 'bigtheme-meta-box', __( 'نمونه متاباکس بیگ تم', 'textdomain' ), 'bigtheme_meta_box_output', 'post', 'normal', 'high' );  // متاباکس صفحه نوشته
	add_meta_box( 'bigtheme-meta-box', __( 'نمونه متاباکس بیگ تم', 'textdomain' ), 'bigtheme_meta_box_output', 'page', 'normal', 'high' );  // متاباکس صفحه برگه
}
add_action( 'add_meta_boxes', 'bigtheme_add_custom_meta_box' );

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

function bigtheme_meta_box_output( $post ) {
	// ساخت فیلدها
	wp_nonce_field( 'my_bigtheme_meta_box_nonce', 'bigtheme_meta_box_nonce' ); ?>

		<label for="bigtheme_textfield"><?php _e( 'عنوان', 'textdomain' ); ?>:</label>
		<input type="text" name="bigtheme_textfield" id="bigtheme_textfield" value="<?php echo bigtheme_get_custom_field( 'bigtheme_textfield' ); ?>" size="50" />

		<label for="bigtheme_textarea"><?php _e( 'متن', 'textdomain' ); ?>:</label>
		<textarea name="bigtheme_textarea" id="bigtheme_textarea" cols="60" rows="4"><?php echo bigtheme_get_custom_field( 'bigtheme_textarea' ); ?></textarea>

	<?php
}

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

function bigtheme_meta_box_save( $post_id ) {
	// جلوگیری از اجرای اسکریپت زمانی که در حال ذخیره خودکار است
	if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

	// بررسی فعلی متاباکس
	if( !isset( $_POST['bigtheme_meta_box_nonce'] ) || !wp_verify_nonce( $_POST['bigtheme_meta_box_nonce'], 'my_bigtheme_meta_box_nonce' ) ) return;

	// جلوگیری از اجرای اسکریپت زمانی که کاربر اجازه ویرایش ندارد
	if( !current_user_can( 'edit_post' ) ) return;

    // ذخیره فیلد عنوان
	if( isset( $_POST['bigtheme_textfield'] ) )
		update_post_meta( $post_id, 'bigtheme_textfield', esc_attr( $_POST['bigtheme_textfield'] ) );

    // ذخیره فیلد متن
	if( isset( $_POST['bigtheme_textarea'] ) )
		update_post_meta( $post_id, 'bigtheme_textarea', esc_attr( $_POST['bigtheme_textarea'] ) );
}
add_action( 'save_post', 'bigtheme_meta_box_save' );

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

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

سخن آخر

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

ممنونم از همراهی شما دوستان عزیز و همراهان ارجمند
موفق و پیروز و سربلند باشید

منبع: بیگ تم مرجع اموزش وردپرس و آموزش هک وردپرس

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

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