Je me demande s'il est possible d'utiliser un fichier de modèle pour une URL spécifique sans avoir à créer une page pour ce modèle.
Voici mon problème simplifié:
J'ai créé une page dans WP avec du contenu de lien qui pointe vers une URL spécifique avec des données de formulaire de fin: (mysite.com/retail/?a=test&b=1234) .
Je veux que cette URL (vente au détail) utilise automatiquement mon fichier modèle template-retail.php que j'ai dans le répertoire de thème enfant, sans avoir à créer une page nommée "vente au détail" et à sélectionner la page modèle à partir de là. Il n'y a que du contenu externe dans le fichier template-retail.php, rien de Wordpress lui-même.
Est-ce possible?
template_redirect
ou un point finalRéponses:
Vous pouvez simplement regarder l'URL, charger le fichier et quitter.
Cela peut être fait lorsque WordPress a chargé son environnement, par exemple sur
'init'
.Notez que ce faisant, une vraie page avec slug "retail" ne peut jamais être utilisée.
C'est assez facile, mais aussi codé en dur, donc si vous en avez besoin pour une seule page, c'est bien. Si vous avez besoin de contrôler plus d'URL, jetez un œil à la solution proposée dans cette réponse .
la source
var_dump($url_path);
voir à quoi il ressemble et ajustez le code. Cette valeur dépend de votre véritable URL. Par exemple, pour l'URL d'accueil personnalisée, ou WP installé dans le sous-dossier peut être différent. @Keat$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/');
$templatename = 'retail';
$pos = strpos($url_path, $templatename);
if ($pos !== false) {
L'
init
action n'est pas adaptée à ce que vous essayez de réaliser. Vous devriez plutôt utiliser letemplate_include
filtre. Vous combinez cela avecget_query_var
pour récupérer les paramètres d'URL pour vérifier quel modèle doit être chargé. Voici les liens:Code:
la source
La façon WordPress de le faire est avec
page-templates
. https://developer.wordpress.org/themes/template-files-section/page-template-files/Vous n'avez besoin que d'un code pour le modèle WordPress. Dans votre thème WordPress, vous pouvez créer un modèle de page et le renommer en
page-id.php
Cette page particulière la récupérera automatiquement et utilisera le modèle.
Par exemple, si votre page a un identifiant de 5874, vous nommerez le modèle comme
page-5784.php
Vous pouvez également nommer le modèle en fonction du slug de page. Par exemple, si le slug de page est
hello-world
alors le nom du modèle serapage-hello-world.php
Voir également: - https://developer.wordpress.org/files/2014/10/template-hierarchy.png
la source
@ shivanand-sharma c'est une méthode parfaite et plus propre ( https://developer.wordpress.org/themes/template-files-section/page-template-files/ ) pour créer une page comme une autre dans wordpress, et si vous le souhaitez pour masquer votre page, j'utilise simplement le plugin simple et efficace ' https://wordpress.org/plugins/exclude-pages/ '
Je dois dire que j'avais besoin d'une URL pour créer POST ou GET sur ma propre page et enregistrer certaines données de session 'WC () -> session', et cela résout ce problème et d'autres, car vous pouvez avoir une épine dorsale personnalisée code php comprenant tous les 'require (' wp-load ') etc' de l'intégralité de wordpress, woocommerce etc. avec lesquels travailler, mysite.com/index.php/MYPAGE .....
Il vous suffit de:
Tout d'abord: créez un fichier à l'intérieur de l'emplacement de votre thème comme modèle de la nouvelle page, quelque chose comme 'wp-content / themes / mytheme / customtemplate.php' (le commentaire est important pour que le 'Nom du modèle' puisse être observé par Wordpress):
Deuxièmement: Créez une page sur wordpress normalement via 'wp-admin'> Pages (disons un nom comme MYPAGE , ou vous pouvez changer le slug comme vous le souhaitez) et liez bien sûr le modèle précédent comme modèle de cette page qui est le nom «Quel que soit le nom» dans la section des attributs du modèle.
Alors, ouvrons la nouvelle page 'mysite.com/index.php/MYPAGE' et vous verrez.
Extras: Créons des fonctions javascript ou jquery dans le panier, la caisse, tout ce que vous pouvez imaginer à l'intérieur des balises HTML `` script '', et incluons du code comme ceci:
la source