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

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

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

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

PHP

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

Q&A

解決済

2回答

5524閲覧

WordPress ページ送りが実装できない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/04/28 12:49

現在WordPressにて、ページ送りが実装できずに困っています。
ページ送りが実装できない場面が2点ありまして、

1.カスタム投稿を対象にした検索結果において、ページ送りが実装できない
2.固定ページに投稿一覧を表示しているものの、ページ送りが実装できない

※ページャー自体は出力されていて、クリックもできますし、
URLの変異もあります「page/2...」
しかし、2ページ目に移動しても、1ページ目と同じ状況です。

多くの同じ状況に関しての記事を参考にしましたが、解決に至ることが出来ずにいます。

恐れ入りますが、何卒ご教授願います。

ページ送りの実装においては「WP-PageNavi」と言うプラグインを使用しています。
プラグインの設定及び、カスタム投稿の検索実装は以下のブログを参考にしています。

参考サイト:絞り込み検索をプラグインを使わずに実装

1.カスタム投稿の検索結果に使用しているソース

php

1<?php get_header(); ?> 2<div id="content_area"> 3<div id="content"> 4<?php 5$s = $_GET['s']; 6$item = $_GET['item']; 7$item_type = $_GET['item_type']; 8$shop = $_GET['shop']; 9 10if($item){ 11$taxquerysp[] = array( 12'taxonomy'=> $item_type, 13'terms'=> $item, 14'include_children'=>false, 15'field'=>'slug', 16'operator'=>'AND' 17); 18} 19else { 20$term_objs = get_terms($item_type); 21$terms = array(); 22foreach($term_objs as $term){ 23$terms[] = $term->slug; 24} 25$taxquerysp[] = array( 26'taxonomy' => $item_type, 27'field' => 'slug', 28'terms' => $terms, 29'operator' => 'IN', 30'include_children' => false, 31); 32} 33if($shop){ 34$taxquerysp[] = array( 35'taxonomy'=>'shop_info', 36'terms'=> $shop, 37'include_children'=>false, 38'field'=>'slug', 39'operator'=>'AND' 40); 41} 42if($information){ 43$taxquerysp[] = array( 44'taxonomy'=>'item_info', 45'terms'=> $information, 46'include_children'=>false, 47'field'=>'slug', 48'operator'=>'AND' 49); 50} 51$taxquerysp['relation'] = 'AND'; 52 53?> 54 55<?php query_posts( array( 56'post_type' => 'petinfo', 57'posts_per_page' => 24, 58'tax_query' => $taxquerysp, 59's' => $s, 60'paged' => $paged, 61) 62 63);?> 64 65<ul id="item_list"> 66<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 67<?php get_template_part('loop-item_list'); ?> 68<?php endwhile; else : ?> 69 70<li>該当なし</li> 71 72<?php endif; ?> 73 74</ul> 75<?php 76wp_pagenavi(); 77wp_reset_query(); 78 ?> 79</div> 80</div> 81<?php get_footer(); ?>

2.固定ページに投稿一覧表示に使用しているソース

php

1<ul id="item_news_list"> 2<?php 3$args = array( 4'post_type' => 'post', 5'posts_per_page' => -1 6); 7$domestic_post = get_posts($args); 8if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); 9get_template_part('loop-news_list'); ?> 10 11<?php endforeach; ?> 12<?php else : ?> 13<li>表示する記事がありません。</li> 14<?php endif; 15wp_reset_postdata(); ?> 16</ul>

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

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

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

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

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

guest

回答2

0

ベストアンサー

query_postsおよびget_postsをテンプレートファイル内で記述しているために、ページ送りが機能していないものと思われます。
かわりにpre_get_postsフックを利用してください。


参考URL

http://notnil-creative.com/blog/archives/1996
http://notnil-creative.com/blog/archives/1688


追記
1.はpre_get_postsフックを使用する形に変更。
2.は元の形にpagedパラメータだけ追加。

動作未検証なので、参考までに
動かない場合は、各変数に想定した値が入っているかを、var_dump()等で確かめてください

1.

PHP

1// 動作未検証 2function teratail74248_ttaishi_pre_get_posts($query) { 3 if ( !is_admin() && $query->is_main_query() ) { 4 if ($query->is_search) { 5 $s = $query->get('s'); 6 $item = $query->get('item'); 7 $item_type = $query->get('item_type'); 8 $shop = $query->get('shop'); 9 10 if($item){ 11 $taxquerysp[] = array( 12 'taxonomy'=> $item_type, 13 'terms'=> $item, 14 'include_children'=>false, 15 'field'=>'slug', 16 'operator'=>'AND' 17 ); 18 } 19 else { 20 $term_objs = get_terms($item_type); 21 $terms = array(); 22 foreach($term_objs as $term){ 23 $terms[] = $term->slug; 24 } 25 $taxquerysp[] = array( 26 'taxonomy' => $item_type, 27 'field' => 'slug', 28 'terms' => $terms, 29 'operator' => 'IN', 30 'include_children' => false, 31 ); 32 } 33 if($shop){ 34 $taxquerysp[] = array( 35 'taxonomy'=>'shop_info', 36 'terms'=> $shop, 37 'include_children'=>false, 38 'field'=>'slug', 39 'operator'=>'AND' 40 ); 41 } 42 if($information){ 43 $taxquerysp[] = array( 44 'taxonomy'=>'item_info', 45 'terms'=> $information, 46 'include_children'=>false, 47 'field'=>'slug', 48 'operator'=>'AND' 49 ); 50 } 51 $taxquerysp['relation'] = 'AND'; 52 53 $query->set('post_type', 'petinfo'); 54 $query->set('posts_per_page', 24); 55 $query->set('tax_query', $taxquerysp); 56 $query->set('s', $s); 57 } 58 } 59} 60add_action( 'pre_get_posts','teratail74248_ttaishi_pre_get_posts' );

2.

PHP

1// 動作未検証 2<?php $paged = get_query_var('paged') ? get_query_var('paged') : 1; ?> 3<ul id="item_news_list"> 4 <?php 5 $args = array( 6 'paged' => $paged , 7 'post_type' => 'post', 8 'posts_per_page' => -1 9 ); 10 $domestic_post = get_posts($args); 11 if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post ); 12 get_template_part('loop-news_list'); ?> 13 <?php the_title(); ?> 14 <?php endforeach; ?> 15 <?php else : ?> 16 <li>表示する記事がありません。</li> 17 <?php endif; 18 wp_reset_postdata(); ?> 19</ul>

投稿2017/04/28 13:12

編集2017/04/30 10:33
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/04/28 13:54

ご回答をありがとうございます。 しかし、理解に乏しく、すぐに解決できそうにありません。 少し、ヒントになるコードが有ると助かります
退会済みユーザー

退会済みユーザー

2017/04/30 10:34

コード例を追記しました。(未検証コードなのでご参考までに)
退会済みユーザー

退会済みユーザー

2017/05/09 05:51

遅くなって申し訳ありません。 無事に解決いたしました! ありがとうございます
guest

0

投稿2017/04/29 13:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.42%

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

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

質問する

関連した質問