重新排序编辑器将位于meta box之后

时间:2011-12-03 作者:Sagive

我想在自定义帖子中重新排序。我让元框和编辑器一起工作,但目前编辑器位于元框上方,我需要它位于其他位置。

这是我的元框的代码:

// adding the meta boxes
add_action("admin_init", "tl_admin_init");
function tl_admin_init(){
  add_meta_box("testimonial_description-meta", __(\'Testimonial Description\', \'sagive\'), "testimonial_description", "testimonial", "normal", "core");
}


// getting, setting and displaying PROJECT DESCRIPTION meta box
function testimonial_description() {
    global $post; // this is a must!
    $custom = get_post_custom($post->ID); // this is a must!
    $testimonial_description = $custom["testimonial_description"][0];
    ?>
    <textarea name="testimonial_description" style="width: 98%; height: 10em; " /><?php echo $testimonial_description; ?></textarea>
    <label><?php _e(\'Write a Simple 2 Line Description of your client testimonial without html for clean design.\', \'sagive\'); ?></label>
    <?php
}
我试图删除编辑器并在该功能完成后重新安装,但我想这是一个过于简单的解决方案,因为它不起作用。

我已使用以下方法删除编辑器:

/* This will help me get rid of the editor */
function tl_remove_pages_editor(){
    remove_post_type_support( \'testimonial\', \'editor\' );
}   
add_action( \'init\', \'tl_remove_pages_editor\' );
然后使用再次添加add_post_type_supports.

有什么建议吗?

4 个回复
最合适的回答,由SO网友:Chris_O 整理而成

这将允许帖子编辑器像其他可排序的帖子框一样移动。

function move_posteditor( $hook ) {
    if ( $hook == \'post.php\' OR $hook == \'post-new.php\' ) {
        wp_enqueue_script( \'jquery\' );
        add_action(\'admin_print_footer_scripts\', \'move_posteditor_scripts\');

    }
}
add_action( \'admin_enqueue_scripts\', \'move_posteditor\', 10, 1 );

function move_posteditor_scripts() {
    ?>
    <script type="text/javascript">
        jQuery(\'#postdiv, #postdivrich\').prependTo(\'#your_meta_box_id .inside\' );
</script>
<?php }

SO网友:Simon East

这是我找到的最简单的方法。

创建元盒时,只需将上下文设置为“高级”。然后,锁定edit_form_after_title 钩子-在那里打印你的元框,然后移除它,这样它就不会出现两次。

// 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\']);
});
感谢Andrew\'s solution here.

SO网友:jb510

此解决方案来自WordPress.org forums 对我来说效果很好,没有任何JS。我将其修改为仅针对单个CPT,因此在下面的代码中替换{post-type} 使用要针对的帖子类型:post, page, my_custom_post_type, 等(如果这让人困惑,请参阅该标准页面/帖子示例中指向.org的引用链接)

add_action( \'add_meta_boxes\', \'jb_make_wp_editor_movable\', 0 );
function jb_make_wp_editor_movable() {
    global $_wp_post_type_features;
    if (isset($_wp_post_type_features[\'{post-type}\'][\'editor\']) && $_wp_post_type_features[\'{post-type}\'][\'editor\']) {
        unset($_wp_post_type_features[\'{post-type}\'][\'editor\']);
        add_meta_box(
            \'description_sectionid\',
            __(\'Description\'),
            \'jb_inner_custom_box\',
            \'{post-type}\', \'normal\', \'high\'
        );
    }
}
function jb_inner_custom_box( $post ) {
    the_editor($post->post_content);
}

SO网友:krembo99

您是否尝试设置$priorityhigh 和改变背景?

如果这样做没有帮助的话,有一种方法可以使用,那就是将编辑器移动到元框中,然后您可以随意放置它。

结束

相关推荐

从Metabox保存数据不起作用

我已经使用了添加metabox的教程。但我的数据不会保存在框中。我在编辑链接页面中有元框,但当我将任何数据放入框中并按下更新按钮时,它不会保存数据。那么实际上,我想知道我什么时候把数据放进框中,我可以使用$\\u POST[]获取数据吗?如果是,请帮助我,使我的代码部分出错。。// backwards compatible add_action( \'admin_init\', \'blc_add_custom_link_box\', 1 ); /*