createwebsite22
@createwebsite22 (Taka 西川)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

1.実現したいこと

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

2.発生している問題

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

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

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

3.該当のソースコード

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

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 【ニュース】ではなく、【お客様の声】などに変更したい場合はどこの値で変更することができるのでしょうか?

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

0

3Answer

Comments

  1. アドバイスありがとうございます。
    こういうことでしょうか?

    以下のコードでは私が意図しているように表示されないのですが、どこが間違っているのでしょうか?
    もう一度、教えていただけないでしょうか?

    ```PHP

    <?php
    if (has_category()) {
    $category = get_the_category();
    $categoryIDs = array();
    foreach ($category as $cat) {
    $categoryIDs = $cat->term_id;
    }
    }

    $args = array(
    'posts_per_page' => 2, // ➀ 2記事を表示
    'offset' => 3, // ➁
    'category__in' => $categoryIDs, // ➂ 現在のカテゴリーIDを取得
    'orderby' => 'rand' // ➃ ランダムに表示
    );
    $related_query = new WP_Query($args);
    ?>


    ```

アドバイスありがとうございます。
こういうことでしょうか?

以下のコードでは私が意図しているように表示されないのですが、どこが間違っているのでしょうか?
もう一度、教えていただけないでしょうか?


<?php
  if (has_category()) {
   $category = get_the_category();
  $categoryIDs = array();
    foreach ($category as $cat) {
      $categoryIDs = $cat->term_id;
    }
  }

  $args = array(
    'posts_per_page' => 2,             // ➀ 2記事を表示
    'offset'          => 3,            // ➁ 
    'category__in'   => $categoryIDs,  // ➂ 現在のカテゴリーIDを取得
    'orderby'        => 'rand'         // ➃ ランダムに表示
   );
  $related_query = new WP_Query($args);
?>


0Like

@createwebsite22
もしかしたら「'orderby' => 'rand'」が関係しているのかもしれないです
外し「posts_per_page=>-1」で通常の並びですべて表示してみるのはいかがでしょうか?

それでうまく表示された場合、一旦配列か何かにそのデータを入れて、ランダムで2つ取得するのが良いかもしれないです

0Like

Your answer might help someone💌