web-dev-qa-db-ja.com

カスタム投稿タイプ編集ページで1つの列レイアウトを強制する方法

カスタム投稿タイプを使用してプラグインを作成しました。デフォルトの2列の投稿ページを1列にする必要があります。同時に、Publishメタボックスが下に移動する必要があります。私は関数を介してこれを何とかする必要があります。

私はWPSEからいくつかの解決策を持っていますが、私が見つけた唯一の解決策は実際に "Publish"メタボックスを隠しています。その理由がわからないようです。

これを行う方法についての任意のアイデア?

3
Armand

get_user_option_meta-box-order_{$page}というフィルタがあります。ここで$pageは投稿タイプの名前です。 submitdivが配列の最後の値であることを確認してください。

add_filter( 'get_user_option_meta-box-order_post', 'wpse25793_one_column_for_all' );
function wpse25793_one_column_for_all( $order )
{
    return array(
        'normal'   => join( ",", array(
            'postexcerpt',
            'formatdiv',
            'trackbacksdiv',
            'tagsdiv-post_tag',
            'categorydiv',
            'postimagediv',
            'postcustom',
            'commentstatusdiv',
            'slugdiv',
            'authordiv',
            'submitdiv',
        ) ),
        'side'     => '',
        'advanced' => '',
    );
}
6
Bainternet

1つの方法は、元のメタボックスを削除し、次に再追加 )メタボックス、更新されたパラメータたとえば、スラッグcpt-slugを持つカスタム投稿タイプの場合、これは "Featured Image"メタボックスを横の列からメインの列に移動します。

編集する

Publishメタボックスのパラメータはsubmitdiv、正しいコールバックはpost_submit_meta_box()です。これらの正しいパラメータを反映するように、以下のコードを更新しました。また、add_meta_box()$contextパラメータを'high'から'low'に変更しました。これにより、Publishメタボックスが下部に追加されます。

<?php
function wpse25793_move_post_metaboxes( $post ) {
    global $wp_meta_boxes;

    remove_meta_box( 'submitdiv', 'cpt-slug', 'side' );
    add_meta_box( 'submitdiv', __( 'Publish' ), 'post_submit_meta_box', 'cpt-slug', 'normal', 'low' );
}
add_action( 'add_meta_boxes_cpt-slug', 'wpse25793_move_post_metaboxes' );
?>

アプローチは "Publish"メタボックスでも同じです。注目の画像メタボックスではなく、公開メタボックスを削除または追加するだけです。

3
Chip Bennett

こんにちは、「強制1列」に関する質問の後半部分に回答するだけです。get_user_option_screen_layout_{Post_type}フィルターを使用してそれを実行できます。すべてのユーザーをターゲットにするには、次のようにします。

add_filter( 'get_user_option_screen_layout_spectacle',
  function( $result, $option, $user ){
    if( !empty($user) ):
       $result = '1';
    endif;
return $result;
  }, 
10, 3 );
0
CRavon