デフォルトの管理画面オプションとメタボックスの順序を設定する


28

functions.phpファイルでデフォルトの「画面オプション」とメタボックスの順序を設定する何らかの方法(任意の方法)を必死に探しています。ここで提供できる支援はありますか?


2014年の更新:メタボックスを並べ替える必要がある場合は、以下のNabilの回答を参照してください。
rinogo

回答:


23

編集後ページでのメタボックスの順序の設定

メタボックスを削除し、必要な順序で再度追加する必要があります。

メタボックスを無効にするには:(ニーズに合わせてカスタマイズし、htmlコードのメタボックスIDを見て、関数の最初のパラメーターとして使用する名前を確認します)

function my_remove_meta_boxes() {

    remove_meta_box('postcustom', 'post', 'core');

    remove_meta_box('commentsdiv', 'post', 'core');

    ...
}

add_action( 'admin_menu', 'my_remove_meta_boxes' );

それらを削除した後、add_meta_box関数を使用して新しい位置に追加できます:http ://codex.wordpress.org/Function_Reference/add_meta_box 。メタボックスの順序は、add_meta_box関数を呼び出す順序によって異なります。たとえば、次のコードスニペットでは、コメントメタボックスはカスタムフィールドメタボックスの前にあります。

function my_add_meta_boxes( $post_type, $post ) {
    if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
        add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core');

    if ( post_type_supports($post_type, 'custom-fields') )
        add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core');

    ...
}

add_action( 'add_meta_boxes', 'my_add_meta_boxes' );

ファイルwp-admin / edit-form-advanced.phpをご覧ください。

投稿リストページに表示する列タイトルの設定

フィルターmanage _ {$ post_type} _posts_columnsを使用する必要があります。たとえば、次のスニペットはコメント列を削除します。

function my_remove_columns( $posts_columns ) {
    unset( $posts_columns['comments'] );

    return $posts_columns;
}

add_filter( 'manage_post_posts_columns', 'my_remove_columns' );

投稿リストページに表示されるデフォルトの結果の設定

「edit _ {$ post_type} _per_page」および「edit_posts_per_page」フィルターを使用します。

function my_edit_post_per_page( $per_page, $post_type ) {

    $edit_per_page = 'edit_' . $post_type . '_per_page';
    $per_page = (int) get_user_option( $edit_per_page );
    if ( empty( $per_page ) || $per_page < 1 )
        $per_page = 1;

    return $per_page;
}

add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );

特定の投稿タイプをターゲットにするには:

  • 使用add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );たとえばadd_filter( 'edit_post_per_page', 'my_edit_post_per_page' );、ポストのためadd_filter( 'edit_page_per_page', 'my_edit_post_per_page' );のページについて。

  • または、関数内で条件を使用します。例えば:

    function my_edit_post_per_page($ per_page、$ post_type){

    if( $post_type == 'post' ) {
        $edit_per_page = 'edit_' . $post_type . '_per_page';
        $per_page = (int) get_user_option( $edit_per_page );
        if ( empty( $per_page ) || $per_page < 1 )
            $per_page = 1;
    }
    
    
    return $per_page;
    

申し訳ありませんが、多分私は自分自身を正しく説明しませんでした。管理エリアの投稿編集ページのメタボックスを参照し、管理投稿リストページに表示するデフォルトの投稿数を設定しました。
NetConstructor.com

1
技術的にこれは質問ではなく、実際には2つの質問ですか?
トムJノウェル

答えを修正しました。詳細が必要な場合はお知らせください。
-sorich87

@ sorich87はあなたの応答に感謝しますが、私が覚えているのは、各メタボックスの正確な順序を特定する方法がなかったか、そこにあったことですか?たぶん私はもう少し具体的にする必要があります。基本的に、各アカウントにログインせずにすべてのユーザーにさまざまなオプションを事前設定できるさまざまなコードスニペットを探しています。例:投稿編集ページのメタボックスの正確な順序の設定、投稿リストページに表示する列タイトルの設定、投稿リストページに表示されるデフォルトの結果の設定など。前もって感謝します。
NetConstructor.com

答えを修正しました。
sorich87

9

次の例では、置き換え{CPT}後の型名で、のようなpostpagebookeventimaginaryfoobar名前付きポストタイプを持っている場合...だからevent、あなたがのためにフィルタを追加する必要がありますget_user_option_meta-box-order_event

add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
    return array(
        'normal' => join( 
            ",", 
            array(       // vvv  Arrange here as you desire
                'customdiv-{CPT}',
                'authordiv',
                'slugdiv',
            )
        ),
    );
}

ノート:

  • normalあなたも持つことができますsideし、advanced
  • 値はコンマ区切りのdiv idです。ページのソースコードを表示するか、推測することができます。
  • カスタムオーダーに含まれていないメタボックスは、リストの最後に自動的に追加されます。

1
私は{CPT}命名法に多少混乱しました。明確にするために、という名前の投稿タイプがある場合event、のフィルタを追加する必要がありますget_user_option_meta-box-order_event
rinogo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.