#1 楼
设置后编辑页面上的meta框的顺序您将需要删除meta框,然后按照所需的顺序再次添加它们。
要禁用meta框: (根据您的需要进行定制,请查看html代码中的metabox ID,以了解应使用哪个名称作为函数的第一个参数)。
您可以使用add_meta_box函数将其添加到新位置:http://codex.wordpress.org/Function_Reference/add_meta_box。元框的顺序取决于调用add_meta_box函数的顺序。例如:使用以下代码段,注释元框将位于自定义字段元框之前。
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' );
您可能要查看文件wp-admin / edit-form-advanced.php
设置哪些列标题显示在帖子列表页面上
您需要使用过滤器manage _ {$ post_type} _posts_columns。例如:以下代码段将删除注释列。
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' );
设置要显示在帖子列表页面上的默认结果
使用过滤“ edit _ {$ post_type} _per_page”和“ edit_posts_per_page”。
function my_remove_columns( $posts_columns ) {
unset( $posts_columns['comments'] );
return $posts_columns;
}
add_filter( 'manage_post_posts_columns', 'my_remove_columns' );
要定位特定的帖子类型:使用
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){
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' );
评论
抱歉,也许我没有正确解释自己。我指的是管理员区域中帖子编辑页面上的元框,以及设置要显示在管理员帖子列表页面上的默认帖子数。
– NetConstructor.com
2010年9月6日在8:13
所以从技术上讲这不是一个问题,真的是两个问题吗?
– Tom J Nowell♦
2010年9月6日在8:18
我修改了答案。让我知道您是否需要更多详细信息。
– sorich87
10-9-6'8:41
@ sorich87谢谢您的回复,但是从我记得的内容来看,无法确定每个metabox的确切顺序,还是在那里?也许我应该更具体一些。我基本上是在寻找各种代码段,这些代码段使我可以为所有用户预设各种选项,而不必登录每个帐户。示例:设置帖子编辑页面上元框的确切顺序,设置哪些列标题显示在帖子列表页面上,设置默认结果显示在帖子列表页面上……类似的事情。提前致谢。
– NetConstructor.com
2010年9月7日于4:41
我修改了答案。
– sorich87
2010年9月7日于7:17
#2 楼
在以下示例中,将{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
值是逗号分隔的div ID,您可以通过查看页面源代码来获取,也可以猜测
自定义订单中未包含的任何元框都将自动添加到列表的末尾。
评论
{CPT}的术语使我有些困惑;为了弄清楚,如果您有一个名为event的帖子类型,则需要为get_user_option_meta-box-order_event添加一个过滤器。
– rinogo
17年8月10日在21:13
评论
2014年更新:对于只需要重新排序元框的人,请参阅下面的Nabil答案。