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

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

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

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

PHP

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

Q&A

解決済

1回答

749閲覧

WordPress の投稿で任意の記事を非表示にするには?

createwebsite22

総合スコア6

WordPress

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

PHP

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

0グッド

1クリップ

投稿2021/05/29 03:35

編集2021/05/29 03:39

###1.実現したいこと

WordPress で特定のCategoryを関連記事としてランダム表示をさせたいが、任意の条件の記事は非表示設定にするには?

###2.発生している問題

WordPress のメイン投稿と違い、以下の条件で投稿記事を PHP を使ってループ表示させたいと思っています。

表示自体は問題なくできるのですが、次のことを反映させるにはどのようにすればいいでしょうか?

➀ 2記事を表示
➁ 日付が上から新しい投稿の3記事は非表示
➂ Category 【ニュース】を持つ投稿
➃ ランダムに表示

###3.該当のソースコード

PHP

1<?php 2 if (has_category()) { 3 $category = get_the_category(); 4 $categoryIDs = array(); 5 foreach ($category as $cat) { 6 $categoryIDs = $cat->term_id; 7 } 8 } 9 $args = array( 10 'posts_per_page' => 2, // ➀ 2記事を表示 11 'post__not_in' => array($post->ID), // ➁ 非表示設定 12 'category__in' => $categoryIDs, // ➂ 現在のカテゴリーIDを取得 13 'orderby' => 'rand' // ➃ ランダムに表示 14 ); 15 $related_query = new WP_Query($args); 16?>

###4.試してみたこと

コードを変更しないといけない箇所はおそらく、➁ の箇所だと思っています。

'post__not_in' => array($post->ID),

この記述では「現在の記事は関連記事として表示させない」という設定になっていると思います。

ここをどのように変更すれば「日付が上から新しい投稿の3記事は非表示 」が実現できるのでしょうか?


つまり、以下の10記事がCategory 【ニュース】で投稿されていたとします。

  • ニュース (1月10日)
  • ニュース (1月9日)
  • ニュース (1月8日)
  • ニュース (1月7日)
  • ニュース (1月6日)
  • ニュース (1月5日)
  • ニュース (1月4日)
  • ニュース (1月3日)
  • ニュース (1月2日)
  • ニュース (1月1日)

この場合 (1月8日~10日) の3投稿は除外して、(1月1日~7日) の中からランダムに2記事表示させたいと思っています。

###5.補足情報

まだ、完全に理解しきれていないため可能であれば教えてほしいことがあります。

仮に、別のカテゴリーで同じことをしたい場合はどこをどう変更すればいいのでしょうか?

つまり、 Category 【ニュース】ではなく、【お客様の声】などに変更したい場合はどこの値で変更することができるのでしょうか?

この質問の範疇で回答が可能であれば教えていただければ幸いです。

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

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

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

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

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

yuki84web

2021/05/29 11:59

「日付が上から新しい投稿の3記事は非表示 」については、日付降順で3記事分の投稿を(WP_Queryとかで)取得してIDを控えておき、post__not_inで指定すれば良いのでは?
createwebsite22

2021/05/29 12:04

アドバイスありがとうございます。 それはどのよなコードを書けば実現できるのでしょうか?
createwebsite22

2021/05/29 12:23

何度もすいません。 「日付降順で3記事分の投稿を(WP_Queryとかで)取得してIDを控える」 とはどこを見ればいいのでしょうか? 記事が長すぎて、どこが私が知るべきポイントなのか迷ってしまい探せません。
guest

回答1

0

ベストアンサー

求める仕様ピンポイントのようなコードがドキュメントにあるとは限らないので
似たようなものを探してカスタマイズして下さい。

php

1<?php 2$id = []; 3$args = array( 4 'post_type' => 'post', //投稿タイプ 5 'posts_per_page' => 3, //投稿数 6 'orderby' => 'date', //順序付け(基準とするもの) 7 'order' => 'DESC', //順序付け(降順or昇順) 8); //日付降順で3記事 9$query = new WP_Query( $args ); 10if( $query->have_posts() ) : 11?> 12<?php while ( $query->have_posts() ) : $query->the_post(); ?> 13<?php array_push($id, get_the_ID()); ?> 14<?php endwhile; endif; ?> 15<?php wp_reset_postdata(); ?> 16 17

get the ID()
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_the_ID

投稿2021/05/30 13:59

編集2021/05/31 10:51
yuki84web

総合スコア1857

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

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

yuki84web

2021/05/31 10:52

"日付が上から新しい投稿の3記事"でしたので間違ってました。 3記事分のIDを配列に追加しているので、その配列を除外IDとしてQP_Query等のパラメータで指定してください。
createwebsite22

2021/06/01 17:19 編集

ありがとうございます。 教えていただいた、コードで私が実現したい設定を反映することに成功しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問