web-dev-qa-db-fra.com

Métabox personnalisé pour un modèle de page personnalisé

J'ai créé un modèle de page personnalisé. Maintenant, je dois le rendre configurable. Cependant, puisque j'utilise plusieurs modèles dans mon thème, je souhaite être sûr que cette configuration ne sera disponible que lorsque l'utilisateur aura choisi ce modèle pour une page. Y a-t-il une option pour le faire?

add_meta_box accepte différents $post_type, de sorte que le plus proche que je puisse obtenir est d'ajouter metabox à toutes les pages, ce que j'aimerais éviter.

1
Dawid Adach
<?
// Check:
// 1. If you are editing post, CPT, or page
// 2. If post type IS NOT SET
if( 'post.php' == basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']) && !isset($_GET['post_type']) ) {

    // get post ID
    $postid = $_GET['post']; 

    // check the template file name
    if ('my_template.php' == get_page_template_slug($postid) ) {
        // add your metabox here
        add_action( 'add_meta_boxes', 'my_metabox' );
    }

}

Je ne me souviens pas pourquoi je vérifiais le type de message, pas le numéro d'identification, mais vous pouvez changer

!isset($_GET['post_type'])

pour vérifier si post ID est défini:

isset($_GET['post'])

Remarque : la méta-boîte ne sera disponible qu'après que vous aurez enregistré votre message (page) en utilisant le modèle approprié.

1
Max Yudin

" disponible uniquement lorsque l'utilisateur choisit ce modèle "? Je ne suis pas sûr (j'en doute) si cela est même possible. Au lieu de cela, je suggérerais l’une des deux options suivantes:

Si vous souhaitez rendre le modèle de page configurable page par page, les méta-boîtes peuvent constituer la bonne direction. Vous pouvez par exemple ajouter une option du type "utiliser l'image sélectionnée comme arrière-plan", etc.

Toutefois, si vous souhaitez que votre modèle de page soit configurable de manière plus générale, vous pouvez utiliser Options du thème. Voici une introduction au codex: https://codex.wordpress.org/Creating_Options_Pages

0
tillinberlin