我正在拼命地寻找某种方式(通过任何方式)来通过functions.php文件设置默认的“屏幕选项”和metabox顺序。任何人都可以在这里提供任何帮助吗?
我正在拼命地寻找某种方式(通过任何方式)来通过functions.php文件设置默认的“屏幕选项”和metabox顺序。任何人都可以在这里提供任何帮助吗?
Answers:
您将需要删除元框,然后按所需顺序再次添加它们。
要禁用元框:(根据您的需要进行定制,请查看html代码中的元框ID,以了解应将哪个名称用作函数的第一个参数)
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
您需要使用过滤器manage _ {$ 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' );
使用过滤器“ edit _ {$ 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
。