質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

206閲覧

WordPressのカスタム投稿(複数ページテンプレート使用)を一覧表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2018/10/12 05:40

お世話になります。
WordPressでカスタム投稿の一覧を表示したいのですが、
カスタム投稿で使用するページテンプレートを複数使用しているため悩んでいます。

現在「example」という名前のカスタム投稿タイプを作成している状態で、
archive.phpに一部を抜粋した状態の一覧を表示し、
詳しくはクリックした後のページをsingle-○○.phpで表示するタイプのページ構成になっています。

それを、archive.phpにsingle-○○.phpに表示する形式のまま(それぞれHTML部分などが異なっています)
全て一覧で掲載するような形に変更したいと考えています。

archive.phpにページテンプレート毎に出力する方法は調べて分かったのですが、
複数のsingle-○○.phpを混ぜた状態で、かつ時系列で一覧表示する方法が分かりません。
お分かりになる方がいらっしゃいましたらお力添え頂けないでしょうか。
何卒よろしくお願い致します。

php

1//archive.phpにページテンプレート毎に出力する 2 <?php 3 $args = array( 4 'post_per_page' => '5', 5 'meta_key' => '_wp_page_template', 6 'meta_value' => 'single-example.php', //single-example2.php、single-example3.phpなどがあります 7 'post_type' => 'example', 8 'orderby' => 'date'); 9 $loop = new WP_Query($args); 10 if ($loop->have_posts()) : while ($loop->have_posts()) : $loop->the_post(); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

すみません、自己解決しましたので方法を記載しておきます。
get_page_template_slugという関数を使用することで、
テンプレートごとにHTML部分などが異なる出力を行うことができました。
こんなに便利な関数があったんですね…知りませんでした。

PHP

1<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 2<?php $template_slug = get_page_template_slug( $post->ID ); 3if ($template_slug == ''):?> 4 5//デフォルトテンプレートの記述 6 7<?php elseif ($template_slug == 'single-example2.php'):?> 8 9//single-example2.phpを使用した記事の記述 10 11<?php elseif ($template_slug == 'single-example3.php'):?> 12 13//single-example3.phpを使用した記事の記述 14 15<?php endif; ?>

上記のような形で記述することで、
記事で使用したテンプレートごとに異なる出力を行えました。
CHERRY様この度もご親切にありがとうございました。

投稿2018/10/17 04:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問を理解できていないかもしれませんが、 archive.php で、複数の meta_value をまとめて、表示したいということでしょうか?

そうであれば、meta_query を使って、下記のように記載するとどうなるでしょうか?

PHP

1<?php 2$args = array( 3 'post_per_page' => '5', 4 'orderby' => 'date', 5 'meta_query' => array( 6 relation = 'OR', // 複数の条件がある場合、 'AND' or 'OR' を指定。 7 array( 8 'key' => '_wp_page_template', 9 'value' => 'single-example.php' 10 ), 11 array( 12 'key' => '_wp_page_template', 13 'value' => 'single-example2.php' 14 ), 15 array( 16 'key' => '_wp_page_template', 17 'value' => 'single-example3.php' 18 ), 19 ), 20); 21$loop = new WP_Query($args); 22if ($loop->have_posts()) : while ($loop->have_posts()) : $loop->the_post(); ?>

https://wpdocs.osdn.jp/関数リファレンス/WP_Query 参照。

投稿2018/10/14 03:05

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/16 08:12

ありがとうございます。 複数の meta_value をまとめて表示したいというよりは、 複数の meta_value を個別で表示したいという形になるかもしれません。 私が記載しましたPHP部分を記述した後に、例えば <h1><?php the_title(); ?></h1> <div><?php the_content(); ?></div> のようにHTMLの記述とWordPressの記述が続きまして、 それが元々落とし込んでいた single-○○.php のファイルごとに、 HTML部分の内容が大分異なっています。 そのため、 if (have_posts()) : while (have_posts()) : the_post(); ?> で記事をひとつ引っ張って来るごとに、その記事に対して meta_value の値で振り分け、 振り分けた meta_value の値である single-○○.php のHTML部分をそのまま適用しようと考えました。 頂いた内容を記述してみましたが、 なぜか single-example3.php を使用した記事のみが表示されました。 single-example3.php 部分を削ると single-example2.php が表示され、 single-example2.php 部分を削ると何も表示されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問