我的客户想要将自定义帖子类型的自定义元框放置在管理面板中的标题/永久链接部分和帖子编辑器之间。这可能吗,如果可以,我是否需要使用一个钩子/过滤器/等?

评论

这里的问题非常相似:wordpress.stackexchange.com/questions/35416/…

#1 楼


使用高级上下文和高优先级简单地添加一个meta框
,然后,将其锁在edit_form_after_title钩子上

在此处打印您的meta框,然后将其删除,这样就不会不会出现两次。

// Move all "advanced" metaboxes above the default editor
add_action('edit_form_after_title', function() {
    global $post, $wp_meta_boxes;
    do_meta_boxes(get_current_screen(), 'advanced', $post);
    unset($wp_meta_boxes[get_post_type($post)]['advanced']);
});




评论


我正在工作的站点使用register_post_type函数的register_meta_box_cb参数注册了一些元框。我已经尝试过您的代码,但元框不会在编辑器上方移动。可以在我的情况下使用吗?谢谢

–柠檬
16年8月28日在18:57

我建议您使用自定义的$ context而不是高级的,使用my_before_editor之类的东西,这样您就不会在高级上下文中移动所有元框,而要专门针对特定的元框..参见developer.wordpress.org/reference/函数/ add_meta_box

–farinspace
17年12月8日在21:41



#2 楼

这是将特定的meta框移到编辑器上方的方法,但是在发布代码之前,我只想感谢Andrew和mhulse。你们摇滚!

function foo_deck( $post_type ) {
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
        add_meta_box(
            'contact_details_meta',
            'Contact Details',
            'contact_details_meta',
            $post_type,
            'test', // change to something other then normal, advanced or side
            'high'
        );
    }
}

add_action('add_meta_boxes', 'foo_deck');

function foo_move_deck() {
        # Get the globals:
        global $post, $wp_meta_boxes;

        # Output the "advanced" meta boxes:
        do_meta_boxes( get_current_screen(), 'test', $post );

        # Remove the initial "advanced" meta boxes:
        unset($wp_meta_boxes['post']['test']);
    }

add_action('edit_form_after_title', 'foo_move_deck');


评论


在我的情况下,关键是换成正常,高级或侧面以外的其他东西。谢谢(你的)信息。

– Mayeenul伊斯兰教
2014-09-28 9:39



这是对我最有用的答案。谢谢!

– marvinpoo
18/12/4在14:48

#3 楼

为了提供基于安德鲁答案的完整代码示例,我需要一种在帖子中添加“ Deck”(又称副标题)的方法。我希望卡组字段显示在主标题栏之后。相同的内容(Andrew的答案很亮,但我认为实际提供一个可行的示例可能会有所帮助)。

此答案也有帮助。


使OOP /类成为类。
添加样式/ js使其看起来/感觉/像标题字段。计划在将来的某个时候进行上述改进,但是至少上面的代码应该可以帮助其他人弄清楚这一点。 “字幕”)。

评论


万一它有助于任何人走同一条路:我在这里问了一个具有一些相关/相似代码的问题(我选择使用“标题”字段来保存和过滤子标题)。

– mhulse
13年5月21日在0:14

#4 楼

与其将高级部分中的所有内容移到顶部,不如创建一个新部分并将其移到顶部:

top用于该部分,将high用于优先级的meta框。

对我来说,它在WordPress 4.4.2上有效。我尚未在其他WP版本上对此进行过测试。

#5 楼

还有另一种方式,顺便说一下,我们可以将编辑器置于任何位置:


注册post_type时,将编辑器从支持参数中删除

添加伪造品metabox

add_meta_box( 'does-not-matter', 
__( 'Description'), 
function($post){ 
  wp_editor($post->post_content,'post_content',array('name'=>'post_content'));
},
'post_type_type', 
'advanced', 
'high' );




评论


仅供参考,这仍然有效,但是当您移动框时,它会导致字段内容有些奇怪的行为。用户要当心。

–埃克斯坦
18年2月12日在4:19