Tôi tuyệt vọng tìm kiếm một số cách (bất kỳ cách nào) để đặt "tùy chọn màn hình" mặc định và thứ tự metabox thông qua tệp tin.php. Có ai có bất kỳ trợ giúp họ có thể cung cấp ở đây?
Tôi tuyệt vọng tìm kiếm một số cách (bất kỳ cách nào) để đặt "tùy chọn màn hình" mặc định và thứ tự metabox thông qua tệp tin.php. Có ai có bất kỳ trợ giúp họ có thể cung cấp ở đây?
Câu trả lời:
Bạn sẽ cần phải loại bỏ các hộp meta và thêm chúng một lần nữa theo thứ tự bạn muốn.
Để tắt hộp meta: (tùy chỉnh theo nhu cầu của bạn, hãy xem id metabox trong mã html để biết tên nào bạn nên sử dụng làm tham số đầu tiên của các hàm)
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' );
Sau khi xóa chúng, bạn có thể sử dụng hàm add_meta_box để thêm chúng vào các vị trí mới: http://codex.wordpress.org/Function_Reference/add_meta_box . Thứ tự của các hộp meta phụ thuộc vào thứ tự bạn gọi hàm add_meta_box. Ví dụ: với đoạn mã sau, hộp meta nhận xét sẽ ở trước hộp meta trường tùy chỉnh.
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' );
Bạn có thể muốn xem tệp wp-admin / edit-form-advanced.php
Bạn cần sử dụng bộ lọc quản lý _ {$ post_type} _posts_columns. Ví dụ: đoạn mã sau sẽ xóa cột nhận xét.
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
Sử dụng các bộ lọc 'chỉnh sửa _ {$ post_type} _per_page' và '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' );
Để nhắm mục tiêu một loại bài cụ thể:
sử dụng add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );
ví dụ add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );
cho bài viết, add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );
cho các trang.
hoặc sử dụng một điều kiện trong chức năng của bạn. ví dụ:
chức năng 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;
Trong ví dụ sau, thay thế {CPT}
với tên bài kiểu như post
, page
, book
, event
, imaginary
, foobar
... Vì vậy, nếu bạn có một loại bài đặt tên event
, bạn sẽ cần phải thêm một bộ lọc cho 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
, bạn cũng có thể có side
vàadvanced
{CPT}
danh pháp; để làm rõ, nếu bạn có một loại bài đăng có tên event
, bạn sẽ cần thêm bộ lọc cho get_user_option_meta-box-order_event
.