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

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

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

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

PHP

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

Q&A

2回答

713閲覧

WordPress投稿ループ時に、カスタムフィールドの値で並び替えることはできるか?

ikkouenosenpai

総合スコア16

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/01/06 16:22

前提

WordPress5.0を使用して、独自テーマのWebサイトを構築しています。

カスタム投稿タイプ「comments」の記事(つまりコメント)をループさせています。

php

1<ul> 2<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 3 <li><?php the_content(); ?></li> 4<?php endwhile;?> 5</ul> 6<?php else: ?> 7 <p>何もないです。</p> 8<?php endif; ?>

実現したいこと

実現したいことは、このループのときにコメントっぽく階層構造を持たせるように出力することです。

例)

<ul> </li>Aコメント</li> </li>Bコメント</li> </ul>

↓Aコメントに返信があったら

<ul> </li>Aコメント</li> <ul> </li>Aコメントの子コメント</li> </ul> </li>Bコメント</li> </ul>

のような感じで、親の下に並び替えたいです。

試したこと

現状ではカスタムフィールド「okasan」を作って、返信投稿時にそこに親コメントのIDを入れることで親子関係を持たせることには成功しているのですが、

この番号に応じて上図のように並び替えて出力するコードが見つかりませんでした。そうさせるにはどんなコードがよいですか?

投稿時に親子の投稿日時を書き換えるという力技でもできると思いますし、出力後にjsで並び替えることもできますが、PHPの出力時に並び替えられるような方法が知りたいです。

もしわかる人がいたらよろしくお願い致します!

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

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

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

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

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

guest

回答2

0

素直にpost_typeをhierarchicalにして記事に親子関係を持たせた上で
親なし(parent=0)の記事のループ内で子(parent=親ID)をループさせる

投稿2019/01/08 06:50

KazuhiroHatano

総合スコア7804

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

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

0

コメントっぽく階層構造

デフォルト機能で出来るはずですので、標準テーマなどを参考にしてみては。

【コメントへの返信と階層の設定 - WordPressの使い方】
https://www.adminweb.jp/wordpress/comment/index9.html

投稿2019/01/06 16:51

kei344

総合スコア69407

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

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

ikkouenosenpai

2019/01/06 18:42

あの、前提にもありますけど、カスタム投稿タイプを使っているので、デフォルトのコメント機能はそれには使えないと思うんですが………
ikkouenosenpai

2019/01/06 18:44

ああ、いや、失礼。デフォルト機能を使えってんじゃなくてテーマを見て自分で考えろってことですね。貴重なアドバイスどうもです。
kei344

2019/01/07 01:37

コメント機能を使っている物かと思いました、すみません。 提示のような並び替えはSQLを書き換えるフックを使って処理するくらいしかないと思います。
ikkouenosenpai

2019/01/07 08:49

いえ、質問もわかりにくいですし。へーそうなんですか。「日時順の並び替え」はASCとか指定すればできるけど、「カスタムフィールドの値順で並び替え」をするような指定はないんですか?まいったな…。
kei344

2019/01/07 09:04

カスタムフィールドの値順は出来ますが、親子関係を処理することができません。
ikkouenosenpai

2019/01/07 10:06

あー、なるほどー。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問