web-dev-qa-db-fra.com

Comment obtenir le menu déroulant de modèle dans les attributs de page de type message personnalisé?

Lorsque j'enregistre mon type de message personnalisé, je règle ceci:

'hierarchical'   => true,
'supports'       => array( 'title','author', 'page-attributes' ),

Donc, je suis supposé voir "ordre", "modèles", "parents" dans la zone Attributs lors de la création d'un nouveau message. Mais je ne vois pas les menus déroulants apparaître. Que dois-je faire d'autre pour activer le choix des "modèles"?

6
Jenny

De cette manière, vous ne pouvez pas appliquer de modèles à des types de publication personnalisés. Cela n'apparaîtra que si le type de message est 'page' (vérifiez la ligne 568 de wp-admin/includes/meta-boxes.php). Toutefois, si vous souhaitez attribuer un style à tous vos types de publication personnalisés de la même manière, mais différent des autres types de publication, vous pouvez utiliser le type [posttype] .php -> http://codex.wordpress.org/images/1. /18/Template_Hierarchy.png

5
Joshua Abenazer

Eh bien, à partir de Wordpress 4.7, les modèles personnalisés sont également disponibles pour les types de publication personnalisés. Lorsque vous définissez un modèle, vous devez ajouter une autre ligne sous le nom du modèle (par exemple, 'produit' étant votre type de publication personnalisée):

<?php
/*
Template Name: My custom layout
Template Post Type: post, page, product
*/

// your code here

et n'oubliez pas d'ajouter "attributs de page" lors de l'enregistrement de votre type de publication personnalisée:

'supports' => array('title', 'page-attributes'),

pour afficher la boîte "Attributs de publication".

12
Picard

Avec mon thème, je fournis des modèles "virtuels". Il n'y a pas de fichiers {template}.php spécifiques dans mon thème, alors j'ai filtré les modèles de PAGE comme suit:

function my_virtual_templates( $templates ) {

    $my_virtual_templates = array(
        'virtual_template_id_1' => 'Template 1',
        'virtual_template_id_2' => 'Template 2',
        'virtual_template_id_3' => 'Template 3'
    );

    // Merge with any templates already available
    $templates = array_merge( $templates, $my_virtual_templates );

    return $templates;
}

add_filter( 'theme_page_templates', 'my_virtual_templates' );

Je cherchais un moyen "simple" d’ajouter la boîte de méta-message du message sur un type de message personnalisé (CPT) lorsque je suis tombé sur ce message. Étant donné que mon nouveau CPT utilisera ce même tableau de modèles "virtuels", il me suffisait de mettre en place une méta-boîte de publication.

Utilisation du theme _ {$ post_type} _templates Il crée automatiquement cette zone de boîte à méta-message pour moi. Donc, là où mon CPT s’appelle my_cpt j’ai ajouté le filtre comme suit:

add_filter( 'theme_my_cpt_templates', 'my_virtual_templates');

Maintenant, la méta-boîte et le sélecteur apparaissent, et je peux même changer sur l'écran d'édition en bloc car tout est intégré. Très pratique!

1
Nathan Powell

il suffit de créer un fichier de modèle et de définir en-tête de modèle ceci

/*
Template Name: Some Name
Template Post Type: your_type, page
*/

puis le sélecteur de modèle apparaît dans "Attributs de publication"

0
Kamilos