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

27

Je cherche désespérément un moyen quelconque (n'importe quel moyen) de définir les "options d'écran" par défaut et l'ordre des métaboxes via le fichier functions.php. quelqu'un a-t-il de l'aide à apporter ici?

    
posée NetConstructor.com 06.09.2010 - 01:44
la source

2 réponses

23

Définition de l'ordre des boîtes de méta sur les pages de modification de publication

Vous devrez supprimer les boîtes de méta 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: enlace . 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 messages

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' ); p. ex. 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;
    
réponse donnée sorich87 06.09.2010 - 10:02
la source
8

Dans l'exemple suivant, remplacez {CPT} par le nom du type d'article, comme post , page , book , event , imaginary , foobar ... Donc si vous avez un après avoir nommé event , vous devrez 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',
            )
        ),
    );
}

Notes:

  • Parallèlement à normal , vous pouvez également avoir side et advanced
  • Les valeurs sont des identifiants div séparés par des virgules, vous pouvez les récupérer en affichant le code source de la page ou vous pouvez deviner
  • Toute métabox existante qui ne figure pas dans votre commande personnalisée sera ajoutée automatiquement à la fin de votre liste.
réponse donnée Nabil Kadimi 29.08.2014 - 10:32
la source

Lire d'autres questions sur les étiquettes