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

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

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

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

PHP

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

Q&A

解決済

1回答

2703閲覧

WordPressでアーカイブごとに表示数を変えることができない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

1クリップ

投稿2017/04/10 12:23

編集2017/04/10 13:10

現在、カスタムポストタイプUIを使って、複数の投稿タイプを作っているのですが、
投稿タイプごとにアーカイブの表示数を変更したく、
試しにfunctions.phpに以下のように追記しました。

php

1function change_posts_per_page($query) { 2 /* 管理画面,メインクエリに干渉しないために必須 */ 3 if(is_admin() || ! $query->is_main_query()){ 4 return; 5 } 6 /* カテゴリーページの表示件数を変更する */ 7 if($query->is_post_type_archive('smile')){ 8 $query->set('posts_per_page', '1'); 9 return; 10 } 11} 12add_action( 'pre_get_posts', 'change_posts_per_page' ); 13

しかし、これだけでは表示数が変わらず、管理画面が原因かと思い、
表示設定で表示数を1にしましたが、これでもだめでした。

そして、最後にアーカイブテンプレートでpost_per_pageを1にしましたが
これでもできず、調べてみても上のやり方しか出てきません。

WordPressに詳しい方ご教示いただければと思います。
よろしくお願いいたします。

テンプレート

php

1 <?php 2 $args = array( 3 "post_type"=>"smile", 4 "post_per_page"=>2, 5 ); 6 $the_query = new WP_Query($args); 7 $counter = 0; 8 if($the_query->have_posts()): 9 while($the_query->have_posts()): $the_query->the_post(); ?> 10 <li class="grid <?php echo ($counter == 0) ? 'first':'normal'; ?>"> 11 <a href="<?php the_permalink(); ?>"> 12 <div class="post-fig"> 13 <?php the_automatic_thumbnail_url(get_template_directory_uri()."/common/img/base/noimage_xl.png", "tmb_cut_760x450"); ?> 14 </div> 15 <p class="tbborder-txt mincho">SMILE</p> 16 <p class="time"><?php the_time("Y.m.d"); ?></p> 17 <h2><?php the_title(); ?></h2> 18 <?php if($counter == 0): ?> 19 <div class="ex"><?php echo nl2br(get_the_excerpt()); ?></div> 20 <?php endif; ?> 21 <div class="gray-switch"> 22 <span>詳しくはこちら</span> 23 </div> 24 </a> 25 </li> 26 <?php $counter++; ?> 27 <?php endwhile; ?> 28 <?php endif; ?> 29

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

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

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

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

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

kei344

2017/04/10 14:29

どのように解決したかを回答欄/コメントで追記いただけませんか?このページに辿り着いた同じ疑問を持つ人のために、ぜひお願いします。
guest

回答1

0

ベストアンサー

ひとまず下記のように書き換えてみてください。
もし2件に変わったら、$query->is_post_type_archive( 'smile' ) の分岐部分が間違っています。
変わらなかったら、そもそも編集が適用されていないことを疑ってください。(違うファイルを編集している、アップロード先が違う、上書きされていないなど)

PHP

1function change_posts_per_page($query) { 2 /* 管理画面,メインクエリに干渉しないために必須 *//* ←微妙に間違っている */ 3 /* 管理画面,メインクエリ「以外」に干渉しないために必須 */ 4 if(is_admin() || ! $query->is_main_query()){ 5 return; 6 } 7 $query->set( 'posts_per_page', 2 ); 8} 9add_action( 'pre_get_posts', 'change_posts_per_page' );

投稿2017/04/10 12:38

kei344

総合スコア69400

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

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

退会済みユーザー

退会済みユーザー

2017/04/10 12:43

変わりませんでした。 アップロード先なども確認しましたが、問題ありませんでした。 保存もしっかり行われているようです。
kei344

2017/04/10 12:52

「pre_get_posts」についての記述は1箇所だけでしょうか?
退会済みユーザー

退会済みユーザー

2017/04/10 12:57

はい。一箇所のみです。
kei344

2017/04/10 13:00

後は下記を試してみてください。 1. プラグインを全て止めて再現するか確認する 2. デフォルトテーマで再現するか確認する(functions.phpに提示コードを追記するのみのデフォルトテーマ)
退会済みユーザー

退会済みユーザー

2017/04/10 13:08

プラグインをすべて止め、デフォルトテーマでも試しましたができませんでした。
退会済みユーザー

退会済みユーザー

2017/04/10 13:10

テンプレート内の記述ものせましたのでご確認ください
kei344

2017/04/10 13:46

> デフォルトテーマでも試しましたができませんでした。 それは不思議ですね。 > テンプレート内の記述 new WP_Query($args); をしているのはサブクエリに当たるので、 if(is_admin() || ! $query->is_main_query()){} に引っかかります。 どこのテンプレートかはわかりませんが、「pre_get_posts」での処理に統一されたほうがいいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問