web-dev-qa-db-ja.com

単一ページのWordpressテーマ - ページテンプレートの使用

私は道に迷っています、遅く、私は一晩中グーグルを探しています。私が遭遇している問題はここにあります。私はワードプレスの「ページ」を使って単一のページのウェブサイトを作成しようとしています。私が最初にテーマを設定した方法はex用のいくつかのページテンプレートがあるということです( 'page-contact.php、page-gallery.php、page-map.phpなど')。これらの各ページテンプレートは異なるメタボックスでカスタマイズされており、対応するページテンプレートはそれらのメタボックスを呼び出してページを作成します。この部分は問題ありませんが、個々のページはうまく表示されますが、すべてのページを1つのページにクエリしようとすると、問題が発生します。

これまでのところ、私はすべてのページを表示することはできますが、1つのテンプレートだけを使用しているため、カスタムメタファイルおよびカスタムテンプレートファイルを使用してページが正しく投稿されません。以下のコードを添付しましたが、各ページに適切なテンプレートを表示するためにget_template_part( 'page'、$ template_name_of_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(); ?>

TEMPLATE HIERARCHY

  1. ウェブサイトのランディングページ - すべてのページを引き出して、ここにそれぞれのテンプレートを表示したい

    • LANDING PAGE - page-home.php(これは上記のコードのセクションを持っています)

      • Portfolio - page-portfolio.php(ランディングページの子 - テンプレートファイルにカスタムメタボックスが呼び出されます)
      • マップ - ページマップ(リンク先ページの子)
      • 連絡先 - page-contact(リンク先ページの子)
3
Derrick Workman

さて、私も私が意図していたことをやっているようだと思います。正しい方向を示してくれてありがとう@Milo!以下でわかるように、私はget_page_template_slug()を使いました。ページごとに使用されるテンプレートをフィルタリングするためのstr_replace()。

誰かがこれが実行可能なオプションであることを確認できますか?

$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

さて、あなたはサイト全体のための単一のテンプレートを作ることができ、このコードを使用して異なる<div>で異なるページコンテンツを呼び出すことができます:

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