get_page_template()
peut être remplacé via le page_template
filtre. Si votre plugin est un répertoire contenant les modèles en tant que fichiers, il vous suffit de passer les noms de ces fichiers. Si vous voulez les créer "à la volée" (les éditer dans la zone d'administration et les enregistrer dans la base de données?), Vous pouvez les écrire dans un répertoire de cache et y faire référence, ou y accrocher template_redirect
et faire des eval()
trucs fous .
Un exemple simple pour un plugin qui "redirige" vers un fichier du même répertoire de plugin si un critère donné est vrai:
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'my-custom-page-slug' ) ) {
$page_template = dirname( __FILE__ ) . '/custom-page-template.php';
}
return $page_template;
}
Passer outre
get_page_template()
est juste un hack rapide. Il ne permet pas de sélectionner le modèle à partir de l'écran Admin et le slug de page est codé en dur dans le plug-in, de sorte que l'utilisateur n'a aucun moyen de savoir d'où provient le modèle.La solution à privilégier serait de suivre ce tutoriel qui vous permet d’enregistrer un modèle de page dans le back-end à partir du plug-in. Ensuite, cela fonctionne comme n'importe quel autre modèle.
la source
Oui c'est possible. J'ai trouvé cet exemple de plugin très utile.
Une autre approche qui me vient à l’esprit consiste à utiliser l’ API WP Filesystem pour créer le fichier de modèle à thème. Je ne suis pas sûr que ce soit la meilleure approche à prendre, mais je suis sûr que cela fonctionne!
la source
Aucune des réponses précédentes ne fonctionnait pour la mienne. En voici un où vous pouvez choisir votre modèle dans Wordpress admin. Il suffit de le mettre dans votre fichier plugin php principal et de le modifier
template-configurator.php
par votre nom de modèlela source