web-dev-qa-db-fra.com

Trouver un modèle de page et afficher du contenu

Je construis donc un thème pour un client avec une fonctionnalité de mise en page unique. Actuellement, j'autorise l'utilisateur à créer une page parent et les modules de cette page sont des pages distinctes qui seront définies comme enfants de la page principale.

Clarifier. J'ai une page d'accueil. Sur la page d'accueil, j'ai besoin d'une section pour afficher une visite guidée du produit et aussi une carte. Le client créera la page parent Home, puis une page appelée Product Tour & Map. Ces pages seront définies comme enfants de Home et j'ai mis en place une boucle qui extrait tous les enfants de la page et les affiche.

Voici où je suis coincé. Je dois autoriser mon client à créer une page enfant et à définir un modèle de page personnalisé qui s'affichera ensuite sur la page principale. Est-ce que quelqu'un sait comment je peux faire en sorte que loop fonctionne de cette façon, en recherchant le modèle de page et en affichant le contenu via ce modèle de page, en fonction du choix de l'utilisateur? J'ai cherché tout ce qui était imaginable sur Google, parcouru tous les forums et je ne trouve rien qui soit utile. Je me suis donc dit que certains d'entre vous, les méga ninjas WordPress, pourraient être extraordinaires et me donner un peu d'aide.

J'ai trouvé une autre réponse similaire à cette question ici , mais j'ai besoin de quelqu'un pour clarifier exactement comment je peux mettre en œuvre cela.

Je serai éternellement reconnaissant.

Merci!

2
Jesse Winton

J'ai pu comprendre cela et le rendre dynamique.

J'ai créé une variable $template que j'ai mise dans la boucle, dans laquelle j'ai stocké le modèle de page.

$template = get_post_meta( $post->ID, '_wp_page_template', true );

Ensuite, j'utilise ceci lorsque j'ai besoin des pages enfants pour apparaître.

<?php include(locate_template($template)); ?>

Cela fonctionne pour moi et tire chaque page enfant dans la page parent en fonction du modèle de page qu'ils ont choisi. Ici, pour votre plaisir est la totalité du code.

<?php 
  $this_page=get_query_var('page_id');
  $loop = new WP_Query( array('post_type'=>'page', 'posts_per_page' => -1, 'post_parent' => $this_page, 'orderby' => 'menu_order', 'order' => 'ASC') ); 
  while ( $loop->have_posts() ) : $loop->the_post();

  <?php include(locate_template($template)); ?>

<?php endwhile; endif; ?>
1
Jesse Winton

La question que vous avez liée ne fait pas assez ce que vous voulez - elle vous permet d'obtenir le modèle attribué à une page que vous interrogez, obtenir une page assignée à un modèle particulier.

Vous pouvez le faire en utilisant la fonction get_pages() en interrogeant une clé méta de la page.

Les pages/publications peuvent se voir attribuer une gamme de champs, à la fois des champs intégrés et des champs personnalisés. Tout ce qui est en dehors de la norme (date, type de publication, auteur, etc.) est appelé "publication méta". Pour les pages, le paramètre "modèle de page" est l'un des méta-éléments que vous pouvez interroger individuellement.

Voici comment vous le faites dans votre cas:

$templated_pages = get_pages(
  array(
    "meta_key" => "_wp_page_template",
    "meta_value" => "file-name-of-your-template.php",
  )
);

foreach($templated_pages as $page){
  print_r($page); // print everything so you can see what you've got
  echo get_the_title($page); // print the title
  echo apply_filters("the_content", $page->post_content); // print the content of the page
}

Pour plus de détails sur la fonction get_pages (), vous pouvez voir la référence de la fonction Wordpress . En fonction des informations que vous souhaitez diffuser, vous pouvez également rechercher d'autres fonctions, par exemple. vous pouvez obtenir le titre et le contenu décrits ci-dessus, ou tout ce dont vous avez besoin, en utilisant les informations présentes dans la variable $page dans cette boucle foreach.

0
Tim Malone