web-dev-qa-db-fra.com

Comment forcer la disposition d'une colonne sur la page d'édition de type d'article personnalisé?

J'ai créé un plug-in à l'aide de types de publication personnalisés et je dois forcer la page de publication à deux colonnes par défaut à une seule colonne. Dans le même temps, le Publish metabox doit aller au bas. Je dois le faire via les fonctions de certaines façons.

J'ai quelques solutions de WPSE, mais la seule solution que j'ai trouvée cache en réalité le métabox "Publish". Je n'arrive pas à comprendre pourquoi.

Des idées sur la façon de faire cela?

3
Armand

Il existe un filtre appelé get_user_option_meta-box-order_{$page}, où $page est le nom du type de publication. Assurez-vous simplement que submitdiv est la dernière valeur du tableau:

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

Une approche consiste à supprimer le métabox d'origine, puis à ajouter à nouveau ce métabox, avec des paramètres mis à jour. Par exemple, cela déplacera la méta-boîte "Image en vedette" de la colonne latérale vers la colonne principale, pour un type d'article personnalisé avec un slug cpt-slug:

Modifier

Le paramètre de la boîte de méta Publier est submitdiv et le rappel correct est post_submit_meta_box(); J'ai mis à jour le code ci-dessous pour refléter ces paramètres corrects. J'ai également changé le paramètre add_meta_box()$context de 'high' à 'low', de sorte que la boîte de méta Publier soit ajoutée en bas:

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

L'approche doit être la même pour la méta-boîte "Publier". Il vous suffit de supprimer/ajouter la boîte de méta de publication au lieu de la boîte de méta de l'image sélectionnée.

3
Chip Bennett

Bonjour, je viens de répondre à la deuxième partie de la question concernant le "forçage d’une colonne". Vous pouvez le faire avec le filtre get_user_option_screen_layout_{Post_type}. Pour cibler tous les utilisateurs, vous pouvez le faire par exemple:

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