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

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

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

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

PHP

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

Q&A

1回答

477閲覧

WordPressで記事を『階層ごとに』出力したい

yamasen

総合スコア23

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/03/23 23:13

編集2022/01/12 10:55

###実現したいこと
WordPressで下記のように『親の下に子を1件』と出力したいです。
(子の2件目以降は「もっと読むボタン」で表示するつもりです。孫はありません。)

親コメントを1件
― 子コメントを1件

親コメントを1件
― 子コメントを1件

###前提の仕組み
・コメントは親子いずれも、カスタム投稿タイプmycommentで投稿される。
・親はカスタムフィールドparent_id0が入り、子なら親のIDが入る。

###わからない部分
『親だけ』または『子だけ』ならばWP_Queryで指定をすればできると思います。
たとえば『親だけ』ならこうなるかと思います。

php

1$args = array( 2 'post_type' => 'mycomment', 3 'posts_per_page' => -1, 4 'no_found_rows' => true, 5 'meta_query' => array( 6 'key' => 'parent_id', 7 'value' => '0' 8 'type' => 'NUMERIC', 9 'compare' => '=' 10 ), 11 ); 12$the_query = new WP_Query($args);

(↑ kei344 さんに教えてもらった感じで修正しました。)

しかし、実現したいことにあるような『親の下に子を1件』という出力がまったく見当もつきません。

WP_Queryでできればそのコードを、またはそもそもWP_Queryでできないのであれば考え方などを教えていただけませんでしょうか?

WordPressもPHPも最新です。よろしくお願い致します。

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

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

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

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

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

kei344

2019/03/24 02:09

質問タグのPHPUnitと関係した質問に見えません。PHPの間違いでは?
yamasen

2019/03/24 02:56

そうです。すみません。直しておきました。
guest

回答1

0

たとえば『親だけ』ならこうなるかと思います。

いえ、post_parentを指定する形になります。post_parentはpost_metaに格納される情報ではありません。

【WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット】
http://notnil-creative.com/blog/archives/1288

【データベース構造 - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/データベース構造#Table:_wp_posts

『親の下に子を1件』という出力

WP_Queryでの出力で親だけのループを作り、そのループの中で子をWP_Query/get_post等で取得する必要があります。

投稿2019/03/24 02:20

kei344

総合スコア69364

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

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

yamasen

2019/03/24 03:04

ありがとうございます。『親だけ』のコードのところ直しておきました。 で本題なんですけど、あの、「そのループの中で子をWP_Queryで取得する」について、簡単なコードか、また同じような例があるリンクがもしあったら教えてもらえませんでしょうか? (「get_post等」でも可能なようですが、ややこしいので「WP_Query」で統一したいです。)
kei344

2019/03/24 03:10

> 『親だけ』のコードのところ直しておきました。 間違っていますよ。 $args = array( 'post_type' => 'mycomment', 'posts_per_page' => -1, 'no_found_rows' => true, 'post_parent' => 0 ); あと、回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。
yamasen

2019/03/26 17:54 編集

すみません。'post_parent'はカスタムフィールドの名前なので、 'post_parent' => 0 では指定できないと思います。(でもこの名前が誤解を招いてしまいましたね。) つまり、「WordPressが提供する階層構造機能を使っている」というわけではなくて(その方法がわからないためですが)、「カスタムフィールド'post_parent'の値が0なら親で、0以外なら子だと、自分でそういうルールを作っている」ということです。 たしかに「WordPressが提供する階層構造機能を使っている」のであれば 'post_parent' => 0 みたいですね。 (誤解させてしまいすみませんでした。)
yamasen

2019/03/26 17:55

まぁその親の方はともかく、本題である子の表示が気になります。
kei344

2019/03/26 18:03

「WordPress ループ 入れ子」で検索。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問