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?
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' => '',
);
}
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
:
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.
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 );