web-dev-qa-db-fra.com

Comment puis-je ajouter un attribut supplémentaire dans la section "Attribut de page" de wp-admin pour les pages?

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?

7
Steven

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.

14
chrisguitarguy