wordpressの条件分岐に詳しい方お願いします
- 評価
- クリップ 0
- VIEW 720
前回の質問に回答してくださった方ありがとうございました。おかげで、解決することができたのですが色々不都合が出てきたので新たな方法を探っていますが、どうしても行き詰まってしまいました・・・・。
--------------以下が内容です-------------------
ワードプレスのアーカイブページでカテゴリに属するコメントを表示する為に、
$i = 0;
global $wpdb;
global $data;
$query = "
SELECT
comment.comment_content,
comment.comment_date,
post.ID,
post.post_title,
post.post_name,
meta.meta_value,
count.count
FROM
(
SELECT
cur.comment_ID,
cur.comment_post_ID,
cur.comment_content,
cur.comment_date
FROM
wp_comments cur
LEFT JOIN
wp_comments nxt
ON
cur.comment_post_id = nxt.comment_post_ID
AND
cur.comment_date < nxt.comment_date
WHERE
nxt.comment_post_ID IS NULL
AND
cur.comment_approved = 1
ORDER BY
cur.comment_date DESC
) comment,
(
SELECT
ID,
post_title,
post_name
FROM
wp_posts,
wp_term_relationships term
WHERE
wp_posts.ID = term.object_id
AND
wp_posts.post_status = 'publish'
AND
term.term_taxonomy_id = 36
) post,
(
SELECT
comment_ID,
meta_value
FROM
wp_commentmeta
WHERE
meta_value is not null
) meta,
(
SELECT
count(comment_ID) as count,
comment_post_ID
FROM
wp_comments
WHERE
comment_approved = 1
GROUP BY
comment_post_ID
) count
WHERE
comment.comment_ID = meta.comment_ID
AND
comment.comment_post_ID = post.ID
AND
comment.comment_post_ID = count.comment_post_ID
AND
post.post_title IS NOT NULL
ORDER BY
comment.comment_date DESC
LIMIT 30;
";
$e = single_cat_title('',false);
$data = $wpdb->get_results($query);
foreach ($data as $value):
$r = get_the_terms($value -> ID,'category');
$q = array_column ($r, 'name');
if ( !in_array($e,$q)){
continue;
}
else{表示したい内容}
$i++;
endforeach;
wp_reset_postdata();
endif;
としてみたのですが、どうしてもうまく行きません
一旦出力してみて確認してみた所、
$e = single_cat_title('',false);
は正しく取得できていて、
$r = get_the_terms($value -> ID,'category');
の多次元配列までは取得できているようなのですが、
$q = array_column ($r, 'name');
が
Array ( )になってしまいます。
かなり初心者の為に解決方法を色々手探りで調べてみてここまでは特定できましたが、間違いがわからないので、どなたか詳しい方お願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
get_the_terms() が返すのはtermオブジェクトの配列なので、 (追記:私の勘違いです) array_column
は使えません。
コード全体は見ていないのですが、array_column
の代わりに下記コードにすればとりあえず配列は得られると思います。
$q = [];
foreach ( $r as $term ) {
$q[] = $term->name;
}
【get_the_terms() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_the_terms/
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.98%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2017/12/25 18:25
質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。