web-dev-qa-db-ja.com

メタボックスの後になるようにエディタを並べ替える

カスタム投稿のものを並べ替える私はメタボックスとエディタを連携させましたが、現在エディタはメタボックスの上にあります
そして私はそれが逆である必要があります。

これは私のメタボックスのコードです:

// 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
Sagive SEO

これにより、投稿エディタを他の並べ替え可能な投稿ボックスのように移動できます。

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 }
6
Chris_O

これが私が見つけた最も簡単な方法です。

メタボックスを作成するときは、単にコンテキストを "advanced"に設定してください。それから、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の解決策はこちら

2
Simon East

WordPress.orgフォーラム からのこの解決策は私のためにそしてJSなしで完全に働いた。 1つのCPTのみをターゲットにするように修正したので、以下のコードでは{post-type}をターゲットにしたい投稿タイプに置き換えます:postpagemy_custom_post_typeなど。ページ/投稿例)

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);
}
2
jb510

$priorityhighに設定してコンテキストを変更しようとしましたか?

これが助けにならない場合 - あなたが使うことができるハックがある - それはメタボックスの中にエディタを移動することであり、そしてあなたは好きなようにそれを置くことができる。

1
krembo99