( Note du modérateur: Le titre d'origine était "Comment créer, créer et utiliser un modèle personnalisé pour des types de publication personnalisés dans le cadre du thème Genesis?")
J'utilise le framework de thèmes Genesis, avec un thème enfant presque complètement "stock". J'ai le WP Easy Post Types plugin installé et j'ai créé un type de post personnalisé ("Membres"). J'ai créé deux champs personnalisés à utiliser pour le type de message "membre" (numéro de téléphone et adresse). J'essaie de comprendre comment afficher les informations de ces champs à deux endroits: example.com/members
et example.com/members/bob
. Genesis ne prend pas en charge le fichier typique single-posttype.php
pour créer un modèle pour le type de publication personnalisé, mais même s'il le faisait, cela ne prend pas soin de example.com/members
. Des suggestions sur la façon d'obtenir les informations souhaitées à afficher?
Il s'avère que je me suis trompé, Genesis prend en charge l'utilisation de la méthode page_posttype.php
pour créer un modèle personnalisé. Cela s'est avéré très simple. Voici le contenu de mon fichier page_members.php (situé dans le dossier du thème enfant):
<?php
/*
Template Name: Members
*/
remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'custom_loop');
function custom_loop() {
global $paged;
$args = array('post_type' => 'members');
genesis_custom_loop( $args );
}
genesis();
Quelqu'un pourrait-il clarifier la prochaine étape de ce processus? J'ai un type de publication personnalisé similaire dans un thème enfant Genesis et je dois modifier la boucle sur les pages de taxonomie à publications multiples, ainsi que sur des pages de publication personnalisées uniques. Où va le code personnalisé pour la boucle dans ce cas? Merci!
Ce modèle doit cependant aller dans le dossier du thème enfant, pas dans Genesis.
Modifier:
Vous devrez créer manuellement single- $ posttype.php et l'ajouter au thème enfant, comme indiqué ci-dessus. S'il vous plaît jeter un oeil à Hiérarchie des modèles WordPress . Il va sans dire que tout ce que vous ajoutez à un thème enfant aura priorité sur les fichiers de thème parent.
Regardez comment Matt Wiebe le fait dans son plugin "Smarter Custom Post Types":
http://somadesign.ca/projects/smarter-custom-post-types/
La fonction pertinente est ici:
function my_custom_template_include( $template ) {
if ( get_query_var('post_type') == 'members' ) {
if ( is_single() ) {
if ( $single = locate_template( array( 'members/single.php') ) )
return $single;
}
else { // loop
return locate_template( array(
'members/index.php',
'members.php',
'index.php'
));
}
}
return $template;
}
add_filter( 'template_include', 'my_custom_template_include' );