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

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

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

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

PHP

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

Q&A

解決済

1回答

1575閲覧

今見ている記事と同じカテゴリーの記事を出したいが、一部カテゴリーを省きたい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/07/03 04:10

現在見ている記事と同じカテゴリーの記事をランダムで表示させたいのですが
一部カテゴリーは、ほとんどの記事についているのでそれは省きたいのです

【カテゴリー例】
1、DVD
2、ブルーレイ
3、バラエティ
4、ドラマ
5、ドキュメント
6、アニメ

このようなカテゴリーがあり
それぞれ記事には、1・3、2・5というようにカテゴリーがついています。

同じカテゴリーの記事を表示させるのに
1と2は判断から省きたいのですが、方法はございますでしょうか?

<?php $categories = get_the_category($post->ID); $category_ID = array(); foreach($categories as $category): array_push( $category_ID, $category -> cat_ID); endforeach ; $args = array( 'post__not_in' => array($post -> ID), // 今読んでいる記事を除く 'posts_per_page'=> 4, 'category__in' => $category_ID, 'orderby' => 'rand', ); $query = new WP_Query($args); ?> <?php if( $query -> have_posts() ): ?> <h2>同じカテゴリーの作品</h2> <ul> <?php while ($query -> have_posts()) : $query -> the_post(); ?> <li>記事・・・省きます</li> <?php endwhile; ?> </ul> <?php endif; ?> <?php wp_reset_postdata(); ?>

category__not__inを使ってみたり
配列の要素を削除するarray_spliceというのを試してみたりしたのですが
思うようにいかず。。

3〜6に親カテゴリーを作って、その親に絞って…というのも考えたのですが
CSVで一括登録をする際、このジャンルのカテゴリーがどんどん増えていきます
そのたびに、親をセットする手間を省きたく
それ以外の方法で実現をしたいのです。

ご教授いただけたら嬉しいです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHP

1if ( !in_array( $category->cat_ID, array( 1, 2 ), true ) ) { 2 array_push( $category_ID, $category->cat_ID ); 3}

【PHP: in_array - Manual】
http://php.net/manual/ja/function.in-array.php

【PHPのin_arrayは罠が多いので注意喚起が必要】
https://qiita.com/tadsan/items/2a4c3e6b0b74a408c038

投稿2018/07/03 04:22

kei344

総合スコア69400

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

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

退会済みユーザー

退会済みユーザー

2018/07/03 06:13

ありがとうございます。 これは上記codeに追加すれば良いのでしょうか? foreachの部分を差し替えるのでしょうか?
退会済みユーザー

退会済みユーザー

2018/07/03 06:13

ありがとうございます。 これは上記codeに追加すれば良いのでしょうか? foreachの部分を差し替えるのでしょうか?
kei344

2018/07/03 06:17

意味を考えて試してみてくださいな。
退会済みユーザー

退会済みユーザー

2018/07/03 06:35

すみません。。いろいろ試してみたのですがうまくいきません。。 foreachの中に入れるのかなと思ったのですが…
kei344

2018/07/03 06:48

if ( !in_array( $category->cat_ID, array( 1, 2 ), true ) ) { を if ( !in_array( (int) $category->cat_ID, array( 1, 2 ), true ) ) { これではどうでしょう?
退会済みユーザー

退会済みユーザー

2018/07/03 07:10

ありがとうございます!なりました! ただ、1or2しかついていない場合、カテゴリー関係なく?出てしまうようなのですが 1or2しかついていない場合は同じカテゴリーの作品は「なし」つまり非表示にすることは可能でしょうか?
kei344

2018/07/03 07:18

foreachのあとで$category_IDが1個以上有る場合のみWP_Queryを実行すればよいのでは。
退会済みユーザー

退会済みユーザー

2018/07/03 08:19

if( $query -> have_posts() )に!empty($category_ID)を追加して実現できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問