ฉันหมดหวังที่จะหาวิธี (วิธีใด ๆ ) เพื่อตั้งค่า "ตัวเลือกหน้าจอ" เริ่มต้นและสั่งซื้อ metabox ผ่านไฟล์ functions.php ไม่มีใครมีความช่วยเหลือที่พวกเขาสามารถให้ที่นี่?
ฉันหมดหวังที่จะหาวิธี (วิธีใด ๆ ) เพื่อตั้งค่า "ตัวเลือกหน้าจอ" เริ่มต้นและสั่งซื้อ metabox ผ่านไฟล์ functions.php ไม่มีใครมีความช่วยเหลือที่พวกเขาสามารถให้ที่นี่?
คำตอบ:
คุณจะต้องลบเมตาบ็อกซ์และเพิ่มอีกครั้งตามลำดับที่คุณต้องการ
หากต้องการปิดใช้งานกล่องเมตา: (ปรับแต่งตามความต้องการของคุณดูที่ metabox id ในรหัส html เพื่อทราบชื่อที่คุณควรใช้เป็นพารามิเตอร์แรกของฟังก์ชั่น)
function my_remove_meta_boxes() {
remove_meta_box('postcustom', 'post', 'core');
remove_meta_box('commentsdiv', 'post', 'core');
...
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
หลังจากลบพวกเขาคุณสามารถใช้ฟังก์ชั่น add_meta_box เพื่อเพิ่มพวกเขาในตำแหน่งงานใหม่: http://codex.wordpress.org/Function_Reference/add_meta_box ลำดับของกล่องเมตาจะขึ้นอยู่กับลำดับที่คุณเรียกใช้ฟังก์ชัน add_meta_box ตัวอย่างเช่น: เมื่อมีข้อมูลโค้ดต่อไปนี้กล่องเมตาความคิดเห็นจะอยู่ก่อนกล่องเมตาของฟิลด์ที่กำหนดเอง
function my_add_meta_boxes( $post_type, $post ) {
if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core');
if ( post_type_supports($post_type, 'custom-fields') )
add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core');
...
}
add_action( 'add_meta_boxes', 'my_add_meta_boxes' );
คุณอาจต้องการดูไฟล์ wp-admin / edit-form-advanced.php
คุณต้องใช้ตัวกรองจัดการ _ {$ post_type} _posts_columns ตัวอย่าง: ตัวอย่างต่อไปนี้จะลบคอลัมน์ความคิดเห็น
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
ใช้ตัวกรอง 'แก้ไข _ {$ post_type} _per_page' และ 'edit_posts_per_page'
function my_edit_post_per_page( $per_page, $post_type ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
return $per_page;
}
add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );
หากต้องการกำหนดเป้าหมายประเภทโพสต์ที่เฉพาะเจาะจง:
ใช้add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
เช่นadd_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
สำหรับโพสต์add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
สำหรับหน้า
หรือใช้เงื่อนไขภายในฟังก์ชั่นของคุณ เช่น:
ฟังก์ชั่น my_edit_post_per_page ($ per_page, $ post_type) {
if( $post_type == 'post' ) {
$edit_per_page = 'edit_' . $post_type . '_per_page';
$per_page = (int) get_user_option( $edit_per_page );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 1;
}
return $per_page;
ในตัวอย่างต่อไปแทนที่{CPT}
ด้วยชื่อประเภทโพสต์เช่นpost
, page
, book
, event
, imaginary
, foobar
... ดังนั้นถ้าคุณมีประเภทโพสต์ที่มีชื่อคุณจะต้องเพิ่มตัวกรองสำหรับevent
get_user_option_meta-box-order_event
add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
return array(
'normal' => join(
",",
array( // vvv Arrange here as you desire
'customdiv-{CPT}',
'authordiv',
'slugdiv',
)
),
);
}
normal
นี้คุณยังสามารถมีside
และadvanced
{CPT}
ระบบการตั้งชื่อ เพื่อชี้แจงถ้าคุณมีประเภทโพสต์ที่มีชื่อคุณจะต้องเพิ่มตัวกรองสำหรับevent
get_user_option_meta-box-order_event