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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2779閲覧

【Wordpress】通常投稿に親子関係を持たせた上で、更に指定のカテゴリの一覧ページに親+子ワンセットで表示させていきたい。

NNC

総合スコア22

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/07/06 09:27

Wordpressで飲食店のポータルサイトを作成しています。

各大元の店の紹介ページを通常の投稿機能で行い
下記内容をfunctions.phpに記載を行い

function registered_post_hierarchical( $post_type, $post_type_object ) { if ( $post_type == 'post' ) { $post_type_object->hierarchical = true; add_post_type_support( 'post', 'page-attributes' ); } } add_action( 'registered_post_type', 'registered_post_hierarchical', 10, 2 );

△△店や◇◇店と言った風に更にその各店舗を子ページとして投稿できるようにしてはおりますが

固定ページで作成している一覧ページに特定のカテゴリのみを表示し、
各親ページの下に子ページを表示させる方法が見つからず苦戦しております。

イメージと致しましては

■ストア1(親ページ)
├─△△店(子ページ)
├─◇◇店(子ページ)
└─☆☆店(子ページ)

■ストア2(親ページ)
├─▲▲店(子ページ)
├─◆◆店(子ページ)
└─★★店(子ページ)

という風に親ページとその子ページをワンセットで表示させていけるようにしたいと思っております。
※小ページ部分にはアイキャッチとAdvanced Custom Fieldsで追加した項目を表示させるようにする予定です。

<?php $arg = array( 'posts_per_page' => -1, 'orderby' => 'date', 'order' => 'DESC', 'category_name' => 'tokyo' // 仮で東京と言うカテゴリに設定してある投稿のみ表示させております。 ); $posts = get_posts( $arg ); if( $posts ): ?> <?php foreach ( $posts as $post ) : setup_postdata( $post ); ?> <li> <a href="<?php the_permalink(); ?>"> <?php if ( has_post_thumbnail() ): ?> <?php the_post_thumbnail( 'thumbnail' ); // 親ページのアイキャッチ ?> <?php else: ?> <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/no-img.png" alt="no image" title="no image" width="100" height="100" /> <?php endif; ?> </a> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <dl class="shop"> <!-- ↓↓ここに親ページに含まれている子ページを一覧で出して行きたい --> <dt> <a href="<?php the_permalink(); ?>"> <?php if ( has_post_thumbnail() ): ?> <?php the_post_thumbnail( 'thumbnail' ); // 子ページのアイキャッチ ?> <?php else: ?> <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/no-img.png" alt="no image" title="no image" width="100" height="100" /> <?php endif; ?> </a> 子ページの店舗名 </dt> <dd><?php the_field('shop_address'); // Advanced Custom Fieldsで追加した項目 ?></dd> <dd><?php the_field('shop_tell'); // Advanced Custom Fieldsで追加した項目 ?></dd> <dd><?php the_field('shop_open'); // Advanced Custom Fieldsで追加した項目 ?></dd> </dl> <?php endforeach; ?> <?php endif; wp_reset_postdata(); ?>

上記は謝っている記述である事は承知の上ですが、
やりたい事をお伝えさせて頂くご説明用として解釈して頂ければ幸いです。

上記内において

<!-- ↓↓ここに親ページに含まれる子ページを一覧で出して行きたい -->

の下からの方法が見つからない状態で御座います。

ご説明が上手く伝わっているか不安な所では御座いますが、伝わらないようでしたら、お申し出ください。

ぜひ、お知恵をお貸し頂ければ幸いです。
どうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

wp_list_filter 関数で親ページ、子ページをそれぞれ取得すれば可能だと思います。

php

1<?php 2 3$args = array( 4 'orderby' => 'date', 5 'order' => 'DESC', 6 'category_name' => 'tokyo', 7 'posts_per_page' => -1, 8); 9 10$stores = get_posts( $args ); 11 12if ( $stores ) { 13 $parents = wp_list_filter( $stores, array( 'post_parent' => 0 ) ); 14 15 foreach( $parents as $parent ) { 16 setup_postdata( $GLOBALS['post'] =& $parent ); 17 ?> 18 19 <!-- ここで親ページの情報を出力する. --> 20 21 <?php 22 $children = wp_list_filter( $stores, array( 'post_parent' => get_the_ID() ) ); 23 24 foreach ( $children as $child ) { 25 setup_postdata( $GLOBALS['post'] =& $child ); 26 ?> 27 28 <!-- ここで子ページの情報を出力する. --> 29 30 <?php 31 } 32 } 33}

投稿2019/07/07 15:55

編集2019/07/08 06:39
YukiYamashina

総合スコア1011

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

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

NNC

2019/07/08 05:37

ご回答頂きありがとうございます。 検証や調整にお時間掛かり、ご返信遅れて申し訳ございません。 まず頂きました内容の // ここで親ページの情報を出力する. // ここで子ページの情報を出力する. の下部にそれぞれ、吐き出す情報を各々記載し 表示テストを行ってみたいのですが、エラーとなってしまいました…。 記述の部分でも Wordpressのテーマエディタ内にて // ここで親ページの情報を出力する. の部分に親ページの出力情報を記載すると $children = wp_list_filter( $stores, array( 'post_parent' => get_the_ID() ) ); の部分の色が変わってしまい、以降がエラーとなってしまいました。 ※親ページの情報もエラーになってしまっております。 諸々、調整なども試みてみましたが <?php the_title(); ?>や<?php the_post_thumbnail( 'thumbnail' ); // 親ページのアイキャッチ ?>だけではなく <span>テスト</span>と言った記述でもエラーとなってしまいます。 記載していきたい内容は <a href="<?php the_permalink(); ?>">や <?php if ( has_post_thumbnail() ): ?> <?php the_post_thumbnail( 'thumbnail' ); ?> <?php else: ?> <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/no-img.png" alt="no image" title="no image" width="100" height="100" /> <?php endif; ?> などと言った記述の他にAdvanced Custom Fieldsで追加した項目などなのですが、 上記を表示させる方法をご教授頂いても宜しいでしょうか? 大変、お手数お掛けし誠に恐れ入りますが、宜しくお願い申し上げます。
YukiYamashina

2019/07/08 05:50

回答に記載したコメント部分に the_title(); とだけ書いてもエラーになりますか?
NNC

2019/07/08 06:24

お世話になります。 ご回答頂きありがとうございます。 >回答に記載したコメント部分に the_title(); とだけ書いてもエラーになりますか? こちらですが、言葉足らずで申し訳ございません。 the_title();やthe_post_thumbnail( 'thumbnail' );と言ったのみの記載ですと反映はしているのですが <a href="<?php the_permalink(); ?>"> <?php if ( has_post_thumbnail() ): ?> <?php the_post_thumbnail( 'thumbnail' ); ?> <?php else: ?> <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/no-img.png" alt="no image" title="no image" width="100" height="100" /> <?php endif; ?> </a> のような、記述ですとエラーになってしまうと言う意味合いになります。 いわゆる、htmlとの複合記述が反映しないと言う形になるかと存じますが そちらを行うとエラーになってしまう為、良い方法御座いましたらご教授頂ければ幸いで御座います。
YukiYamashina

2019/07/08 06:43

(<?php で開始された)PHPのコード内に <a href="..."> などの HTML は記述できません。PHPの初歩的な事柄ですので、PHP の開始タグと終了タグの使用方法について今一度検索等によりご確認ください。回答のコードには終了タグと開始タグを追記しましたので合わせてご確認ください。
NNC

2019/07/08 07:22

お世話になります。 >回答のコードには終了タグと開始タグを追記しましたので合わせてご確認ください。 ご教授頂きありがとうございます。 調整時にそちらの方法を行っていましたが、 最後4段目に記述して頂いた<?phpの記述が抜けており そちらが原因のようでした。 無事反映の方、確認致しました。 この度は、ご回答頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問