J'aimerais proposer mon type de message personnalisé sous forme de plug-in, afin que les gens puissent l'utiliser sans toucher à leur dossier de thèmes. Toutefois, les modèles de type de publication personnalisés, tels que single-movies.php, résident dans le dossier du thème. Existe-t-il un moyen de demander à WP de rechercher un fichier single-movies.php dans le dossier du plug-in? Accrocher une fonction dans la hiérarchie de Filer ? Ou get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
la source
la source
get_query_template()
fonction. C'est un crochet variable, donc la première partie{$type}_template
change en fonction du paramètre passé à cette fonction. Voir wp-includes / template.php pour quelques exemples courantsadd_filter( 'single-movies_template', 'my_custom_template' );
comme dans le tutoriel lié. (Cette question est fermée aux nouvelles réponses, je ne peux donc pas l'ajouter toute seule.)PLUGIN_PATH
parplugin_dir_path( __FILE__ )
, puis supprimer la première barre oblique de votre nom de fichier. Le chemin complet ressemblerait à ceci:return plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Réponse mise à jour
Version plus propre et plus courte.
Ancienne réponse
Ajout d'une vérification pour un modèle spécifique de type d'article personnalisé dans le dossier de thèmes à @Brainternet answer.
Vous pouvez maintenant laisser les utilisateurs du plug-in copier le modèle de votre plug-in dans leur thème pour le remplacer.
Dans cet exemple, les modèles doivent figurer dans le répertoire racine du plugin et du thème.
la source
locate_template
desget_stylesheet_directory
sons comme l'option de nettoyage (trouvé ici: code.tutsplus.com/tutorials/… ).Je tiens à souligner que lorsque vous utilisez la méthode de filtrage pour cela, il est extrêmement important de hiérarchiser le filtre de la manière suivante:
Si vous ne le faites pas, parfois, WP tentera de vérifier à nouveau après ce filtre. J'arrachais mes cheveux à cause de ça pendant 2 heures.
la source
Il existe une bien meilleure façon de le faire que j'utilise pour mes plugins.
Utilisez le
template_include
crochet de filtre pour charger le code ci-dessus.la source
Grâce à cette page, j'ai pu résoudre la même question pour moi.
Pour référence, voici ce que j'ai fini avec:
le hook de filtre {$ type} _template n'a pas fonctionné pour moi
la source
La réponse ci-dessus est excellente, mais la vérification de la variable $ single permet au modèle de remplacer un modèle si celui-ci est fourni par le thème theme / child.
la source