web-dev-qa-db-fra.com

Définir les options de l'écran d'administration par défaut et l'ordre Metabox

Je cherche désespérément un moyen (quelconque) de définir les "options d'écran" et l'ordre de metabox par défaut via le fichier functions.php. Quelqu'un a-t-il de l'aide à fournir ici?

28
NetConstructor.com

Définition de l'ordre des boîtes de méta sur les pages d'édition post

Vous devrez supprimer les méta-boîtes et les rajouter dans l'ordre de votre choix.

Pour désactiver les méta-boîtes: (personnalisez-les à votre guise, examinez l'id de metabox dans le code html pour savoir quel nom vous devez utiliser comme premier paramètre des fonctions)

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

Après les avoir supprimés, vous pouvez utiliser la fonction add_meta_box pour les ajouter à de nouvelles positions: http://codex.wordpress.org/Function_Reference/add_meta_box . L'ordre des boîtes de méta dépend de l'ordre dans lequel vous appelez la fonction add_meta_box. Exemple: avec l'extrait de code suivant, la méta-boîte de commentaires sera avant la méta-zone de champs personnalisés.

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

Vous voudrez peut-être consulter le fichier wp-admin/edit-form-advanced.php

Définition du titre des colonnes à afficher sur la page de liste de publication

Vous devez utiliser le filtre gérer _ {$ post_type} _posts_columns. Exemple: l'extrait suivant supprimera la colonne de commentaires.

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

    return $posts_columns;
}

add_filter( 'manage_post_posts_columns', 'my_remove_columns' );

Définition des résultats par défaut à afficher sur la page de liste de diffusion

Utilisez les filtres 'edit _ {$ post_type} _per_page' et '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' );

Pour cibler un type de publication spécifique:

  • utilisez add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' ); par exemple add_filter( 'edit_post_per_page', 'my_edit_post_per_page' ); pour les articles, add_filter( 'edit_page_per_page', 'my_edit_post_per_page' ); pour les pages.

  • ou utilisez une condition dans votre fonction. par exemple.:

    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;
    
23
sorich87

Dans l'exemple suivant, remplacez {CPT} par le nom du type de publication, tel que post, page, book, event, imaginary, foobar... Ainsi, si vous avez un type de publication nommé event, vous devez ajouter un filtre pour 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',
            )
        ),
    );
}

Remarques:

  • Avec normal, vous pouvez aussi avoir side et advanced
  • Les valeurs sont des identifiants div séparés par des virgules.
  • Toute métabox existante qui n'est pas incluse dans votre commande personnalisée sera ajoutée automatiquement à la fin de votre liste.
9
Nabil Kadimi