Defina as opções padrão de tela de administrador e ordem de metabase

27

Eu estou procurando desesperadamente de alguma forma (qualquer forma) para definir "opções de tela" padrão e ordem metabox através do arquivo functions.php. Alguém tem alguma ajuda que possa fornecer aqui?

    
por NetConstructor.com 06.09.2010 / 01:44
fonte

2 respostas

23

Definindo a ordem das caixas meta nas páginas de edição de postagem

Você precisará remover as caixas meta e adicioná-las novamente na ordem desejada.

Para desabilitar caixas meta: (personalize para suas necessidades, olhe o id do metabox no código html para saber qual nome você deve usar como primeiro parâmetro das funções)

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' );

Depois de removê-los, você pode usar a função add_meta_box para adicioná-los em novas posições: enlace . A ordem das caixas meta depende da ordem em que você chama a função add_meta_box. Por exemplo: com o seguinte trecho de código, a caixa meta de comentários será antes da caixa meta de campos personalizados.

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' );

Você pode querer olhar o arquivo wp-admin / edit-form-advanced.php

Definir o título das colunas na página da lista de postagens

Você precisa usar o filtro manage _ {$ post_type} _posts_columns. Por exemplo: o snippet a seguir removerá a coluna de comentários.

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

    return $posts_columns;
}

add_filter( 'manage_post_posts_columns', 'my_remove_columns' );

Definir os resultados padrão a serem mostrados na página da lista de postagens

Use os filtros 'edit _ {$ post_type} _per_page' e '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' );

Para segmentar um tipo de postagem específico:

  • use add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' ); , por exemplo add_filter( 'edit_post_per_page', 'my_edit_post_per_page' ); para postagens, add_filter( 'edit_page_per_page', 'my_edit_post_per_page' ); para páginas.

  • ou use uma condição dentro de sua função. por exemplo:

    função 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;
    
por sorich87 06.09.2010 / 10:02
fonte
8

No exemplo a seguir, substitua {CPT} pelo nome do tipo de postagem, como post , page , book , event , imaginary , foobar ... Então, se você tiver um post tipo chamado event , você precisaria adicionar um filtro para 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',
            )
        ),
    );
}

Notas:

  • Juntamente com normal , você também pode ter side e advanced
  • Os valores são div ids separados por vírgula, você pode ver o código-fonte da página ou pode adivinhar
  • Qualquer metabox que não esteja incluído no seu pedido personalizado será adicionado automaticamente no final da sua lista.
por Nabil Kadimi 29.08.2014 / 10:32
fonte

Tags