Title: カテゴリー、タグで絞り込みをし且つ表示件数を変えたい
Last modified: 2016年7月30日

---

# カテゴリー、タグで絞り込みをし且つ表示件数を変えたい

 *  [F_K](https://ja.wordpress.org/support/users/f_k/)
 * (@f_k)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/)
 * こんにちは、初めて投稿します。
 * 特定のカテゴリーとタグで絞り込んだ記事を、10件以上（または全部）表示したいのですが、
   posts_per_pageを使うとやはりすべてのカテゴリーが表示されてしまいます。
 * [http://blog.serverkurabe.com/wordpress-category-articles](http://blog.serverkurabe.com/wordpress-category-articles)
   
   [http://ja.forums.wordpress.org/topic/1731?replies=3](http://ja.forums.wordpress.org/topic/1731?replies=3)
   [http://ja.forums.wordpress.org/topic/2540?replies=4](http://ja.forums.wordpress.org/topic/2540?replies=4)
 * などの記事を見てやっているのですがこういうのはなかなか難しいでしょうか。
 * 試した記述（1）
    <?php query_posts(array(‘&posts_per_page=20′,’category__in’ 
   => array(6),’&tag_slug__in’ => array( ‘a’, ‘b’ ))); ?>
 * （2）↓この記述の前や間に<?php query_posts(‘&posts_per_page=20’); ?>を入れてみる
   
   <?php $cat_id = 6; $include_cats = explode( ‘/’, $cat_id . get_category_children(
   $cat_id ) ); $args = array( ‘category__in’ => $include_cats, ‘tag_slug__in’ =
   > array( ‘a’, ‘b’ ) ); ?>
    -  <?php
       query_posts($args); if(have_posts()) : while(have_posts()) : the_post();?
      > <?php echo ‘
    - [‘ . get_the_title() . ‘](https://ja.wordpress.org/support/topic/%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E3%80%81%E3%82%BF%E3%82%B0%E3%81%A7%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF%E3%82%92%E3%81%97%E4%B8%94%E3%81%A4%E8%A1%A8%E7%A4%BA%E4%BB%B6%E6%95%B0%E3%82%92/' . get_permalink() . '?output_format=md)_（’.
      get\_the\_date(‘Y年m月d日’) . ‘）_
    - ‘; ?>
       <?php endwhile; ?>
 *  <?php endif; wp_reset_query(); ?>
 * あまり記述には慣れておらず色々な人のをコピペで使っているのでわからずすみません、
   できたらうれしいです。よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)

 *  モデレーター [けい (Kei Nomura)](https://ja.wordpress.org/support/users/mypacecreator/)
 * (@mypacecreator)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173395)
 * まず、貼っていただいたコードが変換されてしまって読めなくなってしまっているので
   
   Codeタグを使ってもう一度貼っていただくか、長いコードの場合は「ペーストピン」という
   のを使ってください。 詳しいルールはこちらに書いてありますので、こちらをお読み
   になってそれに沿っていただくとバッチリかと思います（ ・∀・）b ↓ [http://ja.forums.wordpress.org/topic/11?replies=3](http://ja.forums.wordpress.org/topic/11?replies=3)
 * ——-
    今回書いてもらったものではquery_postsを使っているんですが、 この関数はなかなか
   初心者さんには使いこなすのが手強い関数です。 さらにexplodeとか出てくるので、かなり
   ややこしいことになっております。 まずはどういう表示を実現したいのか、整理してい
   きましょう。 少々時間がかかるかもしれませんがお付き合いください。
 * > 特定のカテゴリーとタグで絞り込んだ記事を、10件以上（または全部）表示したい
 * 1.10件だけ表示させて完了でいいのか？10件でページ送りしたいのか？それとも全部表示
   したいのか？
    それによって使う関数が若干変わってきますので、まずどっちかに決め
   ましょう。
 * 2.「特定のカテゴリーとタグで絞り込んだ」っていうのだとわかりづらいので具体的に
   書いてみますと
    たとえば「日記(diary)」っていうカテゴリーの中に属していて、かつ「
   旅行」っていうタグの付いた記事だけをまとめて表示したい。 こんな感じのご要望で
   問題ないでしょうか？
 * 3.で、絞り込んだものをどこに表示させたいのでしょうか。（ここ重要）
    固定ページ
   なのか、サイドバーなのか、トップページなのか、、、、 それによって考えるべきこと
   がちょっと変わってきます。
 * 4.ちなみに、貼ってもらった記述は、今お使いのテーマのどのファイルに書いています
   か？
    index.php？page.php？それとも？？
 * —–
    まずはここまで整理をお願いします。 コードの貼り直しもおねがいしますね。
 *  トピック投稿者 [F_K](https://ja.wordpress.org/support/users/f_k/)
 * (@f_k)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173396)
 * mypacecreatorさま、ご示唆いただきありがとうございます。ものすごく言葉足らずで
   すみません。
 * ええとまず、1〜4の回答として、現状とやりたいことを順序がばらばらですが記します。
   
   3、4->静的ページにrequireを使って、wordpressの中身を表示させております。htmlを
   phpにすれば、wordpressの記述がそのまま使えるということでしたので・・・ [http://ドメイン.jp/wordpress/](http://ドメイン.jp/wordpress/)
   と、サイトの中の一部にwordpressがあって、wordpressの外のphpファイルに記述してい
   ます。 2->そうです、具体的にいいますと「東京」カテゴリーに属し、かつ「アート」
   と「芝居」というタグが付いている記事を抜き出して表示したいのです。
 * それでこれまで、下記のような記述で一応成功していましたが、表示は5件まででした。
 *     ```
       <?php require_once "../wordpress/wp-load.php" ?>
       <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
       <html lang="ja">
       ...
       <?php
       $cat_id = 5; //東京カテゴリー
       $include_cats = explode( '/', $cat_id . get_category_children( $cat_id ) );
       $args = array(
       	'category__in' => $include_cats,
       	'tag_slug__in' => array( 'a', 'b' ) //aアート、b芝居タグ
       );
       ?>
           <ul>
       <?php
        query_posts($args);
        if(have_posts()) :
        while(have_posts()) :
        the_post();
       ?>
              <?php echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a><em>（' . get_the_date('Y年m月d日') . '）</em></li>'; ?>
              <?php endwhile; ?>
            </ul>
       <?php endif; wp_reset_query(); ?>
       ```
   
 * 1->
    5件というのは、wordpressの設定で最大投稿数を5件にしているからのようです。
   wordpress内のアーカイブページなんかは5件でページ送りしておりここはこれでいいの
   ですが、上記のrequireしているページはもっと多く表示したいのです。ページ送りはしなく
   ていいです。 もっといいますと、 「東京」の「アート、芝居」一覧 「神奈川」の「
   アート、芝居」一覧 をつくりたいです。
 * こまかくてすみません、これでわかりますでしょうか？やはり素人には無謀なことでしょう
   か？
 *  モデレーター [けい (Kei Nomura)](https://ja.wordpress.org/support/users/mypacecreator/)
 * (@mypacecreator)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173402)
 * なるほどなるほど。つまりサイトのトップページに表示するわけですね。
    ページ送り
   はナシでよいということなので、方向性は決まりました。
 * まずquery_postsを使うのをやめましょう。忘れましょう。
    多分参考にされた記事が、
   ややこしいやり方をとっていたか、情報が古いのかなと思います。 あなたが使うべき
   はget_postsです。 説明の便宜上、手前味噌で恐縮ですが自分の書いたブログ記事を紹介
   させてください。 これに沿って説明します。 [http://mypacecreator.net/blog/archives/1981](http://mypacecreator.net/blog/archives/1981)
 * ここでご紹介している「基本となる書き方」で、
    //ここに取得条件を色々書く　の部分
   を以下のようにすればいけるはずです。
 *     ```
       $newslist = get_posts( array(
           'category_name' => 'tokyo', //特定のカテゴリースラッグを指定
           'tag_slug__and' => array('アート', '芝居' ), //特定のタグスラッグを指定
           'posts_per_page' => -1 //取得記事件数を全件に
         ));
       ```
   
 * 神奈川の時はcategory_nameをkanagawaに変えてください。
    上記はあとから見た時に
   わかりやすくするため、カテゴリーIDじゃなくてスラッグで指定できるように書いてます。
 *  [kjmtsh](https://ja.wordpress.org/support/users/kjmtsh/)
 * (@kjmtsh)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173417)
 * mypacecreator さん、
 * >  神奈川の時はcategory_nameをkanagawaに変えてください。
 * F_K さんは、1度ずつ表示するのではなくて、両方を一気に表示したいように読めるの
   ですが… そうすると、
 * `'category_name' => 'tokyo,kanagawa'`
 * のように 2 つを指定すれば、OR 結合で、「東京」と「神奈川」両方のカテゴリが検索
   にかかるので、「変える」というよりも、「追加する」でいいのではないでしょうか。
   それから、タグの方は、「アート」タグがついた投稿と、「芝居」タグがついた投稿の
   両方を取得したい、というように読めるのですが、そうすると、tag_slug__and ではなく
   て、
 * `'tag_slug__in' => array('アート', '芝居')`
 * でないと、「アート」タグだけの投稿、「芝居」タグだけの投稿が除外されちゃいません
   か? F_K さんがご自分で作られたパラメータ指定で、5件意図どおりの出力だったという
   ことは、たぶんそうではないかなぁ、と思うのですが… 間違えたら、ごめんなさい。
 *  トピック投稿者 [F_K](https://ja.wordpress.org/support/users/f_k/)
 * (@f_k)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173418)
 * mypacecreatorさま、できました、ありがとうございます！
    すごい！
 *     ```
       <?php
       $newslist = get_posts( array(
           'category_name' => 'tokyo', //東京カテゴリー
           'tag_slug__in' => array('a', 'b' ), //aアート・b芝居
           'posts_per_page' => -1 //全部表示
         ));
       	foreach( $newslist as $post ):
       	setup_postdata( $post );
       ?>
       	<?php echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a><em>（' . get_the_date('Y年m月d日') . '）</em></li>'; ?>
       <?php
         endforeach;
         wp_reset_postdata();
       ?>
       ```
   
 * このサボテンさんのサイト、よく検索でヒットし勉強させていただいてました。
    本物
   にお会いできて？光栄です。 そういえば query_postsより get_postsを使えとどこか
   でも書いてあった気が・・・ でもarray()の中の条件が書けず(T T;)ぎりぎり似た希望
   に合った記述をそのままパクってきてました。 これでつながりました！こうやって書く
   と、とてもシンプルでわかりやすいですね！ [http://mypacecreator.net/blog/archives/1981](http://mypacecreator.net/blog/archives/1981)
   こちらも興味深く読みました。古いコードをコピペして使ってしまう…はい、反省します…
 * 質問といえば大したことではありませんが、the_time(‘Y年n月j日’)だと日にちが表示
   されなくてget_the_date(‘Y年m月d日’)だったのですがなぜでしょう？
 * あと、
    kjmtshさま、その通りです、 tag_slug__inにしました。andだとやはり表示さ
   れませんでした。ありがとうございます。 東京、神奈川については「両方を一気に」
   でなく一つ一つでよかったです。
 * 細かく言いますと、今現状で
 * >  「東京のアート、芝居」5件／「神奈川のアート、芝居」5件／「埼玉の」…
 * という親ページがあるので、そこからそれぞれリンクして
 * >  ・「東京のアート、芝居」全一覧ページ
   >  ・「神奈川のアート、芝居」全一覧ページ…
 * という個別のページを作ろうと思っています。
    きっとシンプルな書き方があるのかも
   しれませんがとりあえず「東京」「神奈川」全ファイル作ります(^ ^)
 * 今ある全カテゴリー5件ごとのページも、get_postsで自分で書き直してみようと思います。
   
   皆様ありがとうございました。
 *  モデレーター [けい (Kei Nomura)](https://ja.wordpress.org/support/users/mypacecreator/)
 * (@mypacecreator)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173419)
 * > the_time(‘Y年n月j日’)だと日にちが表示されなくてget_the_date(‘Y年m月d日’)だっ
   > たのですがなぜでしょう？
 * それはechoを使った書き方をしているからです。
 * `<?php echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a
   ><em>（' . get_the_date('Y年m月d日') . '）</em></li>'; ?>`
    ↑ ↓
 * `<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><em><?php the_time('
   Y年m月d日') ?></em></li>`
    多分、ほぼ同じ出力結果になると思いますが、 the_time(
   同日投稿の記事がなければthe_dateでもOK）やthe_title、the_permalinkはechoを使わ
   ずに出力、 get_がつくのはechoを使って出力します。
 * ※厳密には同じじゃないのですが、下記の記事が参考になるかなと思います。
    [http://ateitexe.com/wordpress-how-to-get-the/](http://ateitexe.com/wordpress-how-to-get-the/)
   [http://firegoby.jp/archives/5402](http://firegoby.jp/archives/5402)
 *  モデレーター [けい (Kei Nomura)](https://ja.wordpress.org/support/users/mypacecreator/)
 * (@mypacecreator)
 * [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173431)
 * ※補足です。
    　echoのいらない、the_で始まるテンプレートタグは「ループ内で使う」
   ことになっています。（ループ外だと何も表示されません） 　今回はforeach( $newslist
   as $post )～のループ内での出力になりますので、the_で始まるテンプレートタグが問題
   なく使えます。
 * 　上記参考サイトの2つめの記事で記載されている通り、どっちを使っても表示ができる
   場合は、できるだけthe_で始まるテンプレートタグを使ったほうが、初心者さんにも安心
   安全です。

7件の返信を表示中 - 1 - 7件目 (全7件中)

 トピック「カテゴリー、タグで絞り込みをし且つ表示件数を変えたい」には新たに返信する
ことはできません。

## タグ

 * [posts_per_page](https://ja.wordpress.org/support/topic-tag/posts_per_page/)
 * [query_posts](https://ja.wordpress.org/support/topic-tag/query_posts/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 7件の返信
 * 3人の参加者
 * 最後の返信者: [けい (Kei Nomura)](https://ja.wordpress.org/support/users/mypacecreator/)
 * 最後の活動: [12年、 7ヶ月前](https://ja.wordpress.org/support/topic/%e3%82%ab%e3%83%86%e3%82%b4%e3%83%aa%e3%83%bc%e3%80%81%e3%82%bf%e3%82%b0%e3%81%a7%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%82%92%e3%81%97%e4%b8%94%e3%81%a4%e8%a1%a8%e7%a4%ba%e4%bb%b6%e6%95%b0%e3%82%92/#post-173431)
 * 状態: 未解決

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
