web-dev-qa-db-fra.com

Page unique Thème Wordpress - Utilisation des modèles de page

Eh bien, je suis perdu, il est tard et j'ai cherché sur Google toute la nuit. Voici le problème que je rencontre. J'essaie de créer un site Web à page unique en utilisant des "pages" wordpress. La configuration initiale du thème est la suivante: il existe plusieurs modèles de page pour ex ("page-contact.php, page-gallery.php, page-map.php, etc."). Chacun de ces modèles de page est personnalisé avec différentes méta-boîtes et le modèle de page correspondant appelle ces métaboxes et crée la page. Cette partie est correcte et les pages individuelles s'affichent bien. Cependant, lorsque j'essaie d'interroger toutes les pages sur une seule page, c'est là que j'ai des problèmes.

Jusqu'à présent, toutes les pages s'affichent, mais avec un seul modèle. Les pages ne s'affichent donc pas correctement avec leur méta personnalisé et leur fichier de modèle personnalisé. J'ai joint le code ci-dessous. Je me demande s'il existe un moyen d'appeler une variable dans get_template_part ('page', $ template_name_of_page) pour afficher le modèle approprié pour chaque page.

<?php get_header(); ?>
<?php           
$args = array (
    'post_type'                => 'page',
    'post_parent'            => '29',
    'orderby'                => 'menu_order',
    'order'                  => 'ASC',
);

$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {    
        $query->the_post();    
        get_template_part('page', 'countdown');
    }
} else {

}   
wp_reset_postdata();    

?>
<?php get_footer(); ?>

HIERARCHIE DES MODELES

  1. LANDING PAGE OF WEBSITE - Voulez-vous extraire toutes les pages et les afficher avec leur modèle individuel ici

    • LANDING PAGE - page-home.php (ceci a la section de code ci-dessus)

      • Portfolio - page-portfolio.php (Child of Landing Page - contient des méta-boîtes personnalisées appelées dans le fichier de modèle)
      • carte - page-carte (Child of Landing Page)
      • Contact - page-contact (page d'enfant d'atterrissage)
3
Derrick Workman

Eh bien, je pense que je semble faire ce que je voulais aussi. Merci @Milo de m'avoir orienté dans la bonne direction! Comme vous pouvez le voir ci-dessous, j'ai utilisé la méthode get_page_template_slug (); et str_replace () pour filtrer les modèles utilisés par page.

Quelqu'un peut-il vérifier qu'il s'agit d'une option viable?

$args = array (
    'post_type'                => 'page',
    'post_parent'            => '29',
    'orderby'                => 'menu_order',
    'order'                  => 'ASC',
);

$query = new WP_Query( $args );


if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {

        $query->the_post();
        $tn = get_page_template_slug( $post_id );
        $Word = array("page-", ".php",' ');
        $template = str_replace($Word,'',$tn);

        get_template_part('page', $template);
    }
} else {

}
2
Derrick Workman

Vous pouvez créer un seul modèle pour l’ensemble du site et appeler différents contenus de page dans différents <div> à l’aide de ce code:

<?php
 $page_id = 47;
 $page_data = get_page( $page_id );
 echo $page_data->post_content ;
 ?>
0
Milople Inc