修改主编辑器优先级

时间:2013-05-23 作者:Ben Everard

我希望主WordPress帖子编辑器出现在我的一些元框(由高级自定义字段生成)下面。

我知道有add_meta_box()remove_meta_box() 但是,如果我可以修改编辑器元框的优先级,而不必再次删除和添加它,那就太棒了。

有什么想法吗?

2 个回复
最合适的回答,由SO网友:Ben Everard 整理而成

为了回答我自己的问题,我将首先解释为什么@s\\u ha\\u dum的答案对我不适用。

我正在使用高级自定义字段添加额外的元框,这些元框需要显示在WordPress编辑器上方。

@s\\u ha\\u dum指出WordPress编辑器hardcoded within the template, 但我注意到,可以通过删除对编辑器的支持来禁用它。考虑到这一点,我禁用了对编辑器的支持,然后在新的元框中添加了编辑器的代码。

等等看:

add_action(\'init\', function () {
    remove_post_type_support(\'post\', \'editor\');
});

add_action(\'add_meta_boxes\', function () {

    $screens = array(\'post\');

    foreach ($screens as $screen) {

        add_meta_box(
            \'moved_editor\',
            \'Moved Editor\',
            \'moved_editor_custom_box\',
            $screen
        );

    }

});

function moved_editor_custom_box( $post ) {

    // Use nonce for verification
    wp_nonce_field( plugin_basename( __FILE__ ), \'myplugin_noncename\' );

    ?>

        <style>

            #moved_editor {
                border: none;
            }

            #moved_editor h3 {
                display: none;
            }

            #moved_editor .inside {
                padding: 0;
            }

        </style>

        <div id="postdivrich" class="postarea">

            <?php wp_editor($post->post_content, \'content\', array(\'dfw\' => true, \'tabfocus_elements\' => \'sample-permalink,post-preview\', \'editor_height\' => 360) ); ?>

            <table id="post-status-info" cellspacing="0">

                <tbody>

                    <tr>

                        <td id="wp-word-count"><?php printf( __( \'Word count: %s\' ), \'<span class="word-count">0</span>\' ); ?></td>
                        <td class="autosave-info">

                            <span class="autosave-message">&nbsp;</span>

                                <?php if ( \'auto-draft\' != $post->post_status ) : ?>

                                    <span id="last-edit">\'

                                        <?php if ( $last_id = get_post_meta($post_ID, \'_edit_last\', true) ) : ?>

                                            <?php

                                                $last_user = get_userdata($last_id); 
                                                printf(__(\'Last edited by %1$s on %2$s at %3$s\'), esc_html( $last_user->display_name ), mysql2date(get_option(\'date_format\'), $post->post_modified), mysql2date(get_option(\'time_format\'), $post->post_modified));

                                            ?>

                                        <?php else : ?>

                                            <?php printf(__(\'Last edited on %1$s at %2$s\'), mysql2date(get_option(\'date_format\'), $post->post_modified), mysql2date(get_option(\'time_format\'), $post->post_modified)); ?>

                                        <?php endif; ?>

                                    </span>

                                <?php endif; ?>

                            </td>

                        </tr>

                </tbody>

            </table>

        </div>

    <?
}

SO网友:s_ha_dum

编辑是hard-coded into the form. 它不是由插入的add_meta_box.

有一个钩子叫edit_form_after_title 但您应该能够使用它。

概念验证:

// use the action to create a place for your meta box
function add_before_editor($post) {
  global $post;
  do_meta_boxes(\'post\', \'pre_editor\', $post);
}
add_action(\'edit_form_after_title\',\'add_before_editor\');

// add a box the location just created
function test_box() {
    add_meta_box(
        \'generic_box\', // id, used as the html id att
        __( \'Generic Title\' ), // meta box title
        \'generic_cb\', // callback function, spits out the content
        \'post\', // post type or page. This adds to posts only
        \'pre_editor\', // context, where on the screen
        \'low\' // priority, where should this go in the context
    );
}
function generic_cb($post) {
  var_dump($post);
  echo \'generic content\';
}
add_action( \'add_meta_boxes\', \'test_box\' );

结束

相关推荐

如何在用户添加新帖子时为非管理员隐藏插件metabox

我已经能够在后端为非管理员禁用所有元框,但我在Facebook AWD All in one 它创建了一个小部件,所有用户在创建新帖子时都可以看到。如何禁用它?是否有某种命令适用于由插件创建的任何小部件,我可以将其添加到我的函数中。php如果我知道插件的短代码?我需要你的帮助!谢谢http://wordpress.org/extend/plugins/facebook-awd/我使用以下代码删除元框######################################################