nojhanacc
May 22nd, 2021, 12:08
با یکی دیگر از آموزش های وردپرسی سایت فرجاد در خدمت شما هستیم ، در این نوشته ی سایت تصمیم داریم تا شما را با نحوه ی ساخت متاباکس در وردپرس آشنا سازیم . شاید الان با خود بگویید اصلا متاباکس چیست و شاید تاکنون به گوشتان نخورده باشد ، هیچ مشکلی نیست من اندکی از متاباکس برای شما صحبت میکنم . متاباکس در وردپرس : اگر بخواهم در رابطه با متاباکس ها صحبت کنیم باید به شما ذکر کنم متاباکس ها در واقع بخش هایی در صفحات سایت یا برگه های سایت وردپرسی هستند که فیلد های دلخواهی در آنها قرار میگیرند که این فیلد های مشخص می تواند همان تصاویر شاخص یا دسته ها یا … باشد که اکثر وبسایت ها از آنها استفاده می کنند . اما لازم است بدانید که معمولا زمانیکه نیاز باشد در نوشته های خود موارد مشخصی مقلا مثل حجم یک فایل یا قیمت یک برنامه یا … را قرار دهید باید از این متاباکس استفاده کنید . در واقع با کمک متاباکس میتوانید جزئیاتی که مد نظرتان اس را روی سایت نمایشدهید که معمولا اکثر سایت های فروشگاهی که بر اساس وردپرس طراحی میشوند از این امکان جهت نمایش جزئیات کالاهای روی سایتشان استفاده می کنند . حالا که اندکی متاباکس را شناختید بهتره بریم سراغ نحوه ی ساخت متاباکس در وردپرس : در وحله ی اول باید کد زیر را به انتهای کد های فایل function.php قالب وبسایتتان اضافه کنید . در واقع زمان استفاده از این تابع وقتیست که مقداری در متاباکس وارد نشده باشد !
function wpshool_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 wpschool_add_custom_meta_box() {
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس', 'textdomain' ), 'wpschool_meta_box_output', 'post', 'normal', 'high' ); // متاباکس صفحه نوشته
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس', 'textdomain' ), 'wpschool_meta_box_output', 'page', 'normal', 'high' ); // متاباکس صفحه برگه
}
add_action( 'add_meta_boxes', 'wpschool_add_custom_meta_box' );
اما باید گفت که با کد بالا فقط متاباکس در نوشته ها و برگه ها ایجاد میشود و فیلدی در آن قرار ندارد . پس مرحله ی بعد مربوط به ساخت فیلد است که توجه کنید باید کد زیر را هم به دنباله ی کد های بالا اضافه کنید .
function wpschool_meta_box_output( $post ) {
// ساخت فیلدها
wp_nonce_field( 'my_wpschool_meta_box_nonce', 'wpschool_meta_box_nonce' ); ?>
<p>
<label for="wpschool_textfield"><?php _e( 'عنوان', 'textdomain' ); ?>:</label>
<input type="text" name="wpschool_textfield" id="wpschool_textfield" value="<?php echo wpschool_get_custom_field( 'wpschool_textfield' ); ?>" size="50" />
</p>
<p>
<label for="wpschool_textarea"><?php _e( 'متن', 'textdomain' ); ?>:</label><br />
<textarea name="wpschool_textarea" id="wpschool_textarea" cols="60" rows="4"><?php echo wpschool_get_custom_field( 'wpschool_textarea' ); ?></textarea>
</p>
<?php
}
پس از ذخیره سازی فایل مربوطه ، اکنون اگر وارد صفحه نوشته ها و یا برگه ها شوید مشهده خواهید کرد که فیلد های عنوان و متن به متاباکسی که ایجاد کرده بودید اضافه شده است . (به مانند تصویر زیر) https://farjad.co/wp-content/uploads/2016/07/1-2.jpg (https://farjad.co/wp-content/uploads/2016/07/1-2.jpg) بسیار خب حالا باید کد زیر را هم به دنباله کد بالا اضافه کنید تا امکان ذخیره سازی فیلدها فراهم شود . لازم است ذکر کنم که اگر میخواهید متاباکس دیگری هم در نوشته ها قرار دهید و به انها فیلهایی استفاده کنید تنها لازم است از کد زیر استفاده کنید (در حالت استفاده از چند متاباکس)
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس ', 'textdomain' ), 'wpschool_meta_box_output', 'نام post type', 'normal', 'high' );
لازم به ذکر است که منظور از پارامتر normal در کد های بالا این است که متاباکس ها در نوشته های وردپرس زیر ادیتور ایجاد شوند . اگر هم که بخواهید متاباکس ها در سایدبار سمت چپ اضافه شوند تنها کافیس normal را به sidebar تغییر بدید . همینطور باید خدمتتان عرض کنم که پارامتر high هم در کد های فوق تنها برای تعیین ترتیب اولویت متاباکس ها می باشد . بسیار خب ، این آموزش هم به پایان رسید .
function wpshool_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 wpschool_add_custom_meta_box() {
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس', 'textdomain' ), 'wpschool_meta_box_output', 'post', 'normal', 'high' ); // متاباکس صفحه نوشته
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس', 'textdomain' ), 'wpschool_meta_box_output', 'page', 'normal', 'high' ); // متاباکس صفحه برگه
}
add_action( 'add_meta_boxes', 'wpschool_add_custom_meta_box' );
اما باید گفت که با کد بالا فقط متاباکس در نوشته ها و برگه ها ایجاد میشود و فیلدی در آن قرار ندارد . پس مرحله ی بعد مربوط به ساخت فیلد است که توجه کنید باید کد زیر را هم به دنباله ی کد های بالا اضافه کنید .
function wpschool_meta_box_output( $post ) {
// ساخت فیلدها
wp_nonce_field( 'my_wpschool_meta_box_nonce', 'wpschool_meta_box_nonce' ); ?>
<p>
<label for="wpschool_textfield"><?php _e( 'عنوان', 'textdomain' ); ?>:</label>
<input type="text" name="wpschool_textfield" id="wpschool_textfield" value="<?php echo wpschool_get_custom_field( 'wpschool_textfield' ); ?>" size="50" />
</p>
<p>
<label for="wpschool_textarea"><?php _e( 'متن', 'textdomain' ); ?>:</label><br />
<textarea name="wpschool_textarea" id="wpschool_textarea" cols="60" rows="4"><?php echo wpschool_get_custom_field( 'wpschool_textarea' ); ?></textarea>
</p>
<?php
}
پس از ذخیره سازی فایل مربوطه ، اکنون اگر وارد صفحه نوشته ها و یا برگه ها شوید مشهده خواهید کرد که فیلد های عنوان و متن به متاباکسی که ایجاد کرده بودید اضافه شده است . (به مانند تصویر زیر) https://farjad.co/wp-content/uploads/2016/07/1-2.jpg (https://farjad.co/wp-content/uploads/2016/07/1-2.jpg) بسیار خب حالا باید کد زیر را هم به دنباله کد بالا اضافه کنید تا امکان ذخیره سازی فیلدها فراهم شود . لازم است ذکر کنم که اگر میخواهید متاباکس دیگری هم در نوشته ها قرار دهید و به انها فیلهایی استفاده کنید تنها لازم است از کد زیر استفاده کنید (در حالت استفاده از چند متاباکس)
add_meta_box( 'wpschool-meta-box', __( 'نمونه متاباکس ', 'textdomain' ), 'wpschool_meta_box_output', 'نام post type', 'normal', 'high' );
لازم به ذکر است که منظور از پارامتر normal در کد های بالا این است که متاباکس ها در نوشته های وردپرس زیر ادیتور ایجاد شوند . اگر هم که بخواهید متاباکس ها در سایدبار سمت چپ اضافه شوند تنها کافیس normal را به sidebar تغییر بدید . همینطور باید خدمتتان عرض کنم که پارامتر high هم در کد های فوق تنها برای تعیین ترتیب اولویت متاباکس ها می باشد . بسیار خب ، این آموزش هم به پایان رسید .