J'aimerais ajouter une liste de sélection dans la zone Page Attribute
que vous voyez à droite dans l'interface d'administration des pages.
Est-ce que quelqu'un sait si c'est possible?
Ou au moins ajouter une boîte personnalisée en dessous de cette boîte?
Il n'y a pas de crochets pratiques pour ajouter quelque chose à cette case.
Vous pouvez faire l'une des deux choses.
1. Ajouter une nouvelle Meta Box
Pour ce faire, vous vous connectez à l'action add_meta_boxes
et vous appelez add_meta_box
. Vous pouvez spécifier une fonction de rappel dans votre appel à add_meta_box. Ce rappel se chargera de renvoyer votre liste de sélection.
<?php
add_action( 'add_meta_boxes', 'wpse44966_add_meta_box' );
/**
* Adds the meta box to the page screen
*/
function wpse44966_add_meta_box()
{
add_meta_box(
'wpse44966-meta-box', // id, used as the html id att
__( 'WPSE 44966 Meta Box' ), // meta box title, like "Page Attributes"
'wpse44966_meta_box_cb', // callback function, spits out the content
'page', // post type or page. We'll add this to pages only
'side', // context (where on the screen
'low' // priority, where should this go in the context?
);
}
/**
* Callback function for our meta box. Echos out the content
*/
function wpse44966_meta_box_cb( $post )
{
// create your dropdown here
}
2. Supprimez la boîte de méta Attributs de page par défaut, ajoutez votre propre version
Tout le contenu de l'écran de post-édition, à l'exception de l'éditeur principal et de la zone de titre, est une boîte méta. Vous pouvez les supprimer en appelant remove_meta_box
, puis les remplacer par les vôtres.
Donc, tout d’abord, modifiez la fonction d’ajout ci-dessus pour inclure un appel de suppression de la méta-boîte. Ensuite, vous devrez copier le corps de la fonction page_attributes_meta_box
à partir de wp-admin/includes/meta-boxes.php
et placer vos données en dessous.
<?php
add_action( 'add_meta_boxes', 'wpse44966_add_meta_box' );
/**
* Adds the meta box to the page screen
*/
function wpse44966_add_meta_box( $post_type )
{
// remove the default
remove_meta_box(
'pageparentdiv',
'page',
'side'
);
// add our own
add_meta_box(
'wpse44966-meta-box',
'page' == $post_type ? __('Page Attributes') : __('Attributes'),
'wpse44966_meta_box_cb',
'page',
'side',
'low'
);
}
/**
* Callback function for our meta box. Echos out the content
*/
function wpse44966_meta_box_cb( $post )
{
// Copy the the `page_attributes_meta_box` function content here
// add your drop down
}
Quoi qu'il en soit, vous devrez vous connecter à save_post
pour enregistrer la valeur de votre champ avec add_post_meta
et/ou update_post_meta
.
<?php
add_action( 'save_post', 'wpse44966_save_post' );
/**
* Save our custom field value
*/
function wpse44966_save_post( $post_id )
{
// check nonces, permissions here
// save the data with update_post_meta
}
Ce tutoriel pourrait vous aider.