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

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

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

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

PHP

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

Q&A

解決済

2回答

1189閲覧

wordpressの検索結果でページナビは正常に動作するのに記事一覧が変わらない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/06/03 09:05

解決したいことは、WordPressの検索結果ページの一覧で、ページナビゲーションは、正常に切り替わるのですが、記事一覧が1ページ目の10件から変わりません。
記事の投稿は、カスタム投稿にておこなっております。

ご教授いただけますでしょうか。

//function.php

function my_posts_per_page($query) { if( is_search() ) { $query->set( 'post_type', array('shop') ); $query->set( 'posts_per_page', '10' ); //$query->set( 'paged', 'get_query_var("paged")' ); } if ( $query->is_archive('shop') ) { $query->set( 'posts_per_page', '10' ); } } add_action( 'pre_get_posts', 'my_posts_per_page' ); function my_posy_search($search) { if(is_search()) { $search .= " AND (post_type='shop')"; } return $search; } add_filter('posts_search', 'my_posy_search'); function custom_search($search, $wp_query ) { if ( isset($wp_query->query['s']) ) $wp_query->is_search = true; return $search; } add_filter('posts_search','custom_search', 10, 2);

//search.php

<?php $s = $_GET['s']; $catarea = $_GET['areacat']; $catgenre = $_GET['genrecat']; $post_tag = $_GET['post_tag']; $price = $_GET['price']; $age = $_GET['age']; $for = $_GET['for']; if($for){ $metaquerysp[] = array( 'key'=>'for', 'value'=> $for, 'compare' => 'LIKE' ); } if($age){ $metaquerysp[] = array( 'key'=>'age', 'value'=> $age, 'compare' => 'LIKE' ); } if($price){ $metaquerysp[] = array( 'key'=>'price', 'value'=> $price, 'compare' => 'LIKE' ); } if($post_tag){ $taxquerysp[] = array( 'taxonomy'=>'shoptag', 'terms'=> $post_tag, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); } if($catarea){ $taxquerysp[] = array( 'taxonomy'=>'areacat', 'terms'=> $catarea, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); } if($catgenre){ $taxquerysp[] = array( 'taxonomy'=>'genrecat', 'terms'=> $catgenre, 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); } ?> <?php query_posts( array( 'meta_query' => $metaquerysp, 'tax_query' => $taxquerysp, 's' => $s, ) ); ?> <section class="shop-list-area"> <div class="search-header"> <div class="inner"> <h2 class="search-ttl">Make a New Search</h2> <p class="pagenavi-ttl"> <?/*php if ( function_exists( "pagination" ) ) { pagination( $additional_loop->max_num_pages ); } */ ?><?/*php echo $wp_query->found_posts; */?> Results</p> </div> </div> <div class="inner"> <?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', 'list' ); endwhile; wp_pagenavi(); my_result_count(); // ここら辺で表示します else : endif; ?> <?php //Pagenation if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?> </div> </section> <?php get_footer(); コード

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

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

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

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

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

guest

回答2

0

query_posts でメインクエリを書き換えているからです。pre_get_postsだけで書き換えるようにしたほうが良いです。また、 $query->is_main_query() でメインクエリのみ対象にしたほうが良いです。

【pre_get_postsでメインクエリを制御する | Tips Note by TAM】
https://www.tam-tam.co.jp/tipsnote/cms/post9420.html

【【wordpress】pre_get_postsを使ってみませんか?】
https://qiita.com/ruka/items/e14280d34eddf49efad1

投稿2018/06/03 09:21

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2018/06/03 09:38

ご教授ありがとうございます! 検証してみます。
kei344

2018/06/03 09:45

あと、wp_pagenaviでは独自のパラメータは無視される可能性があります。
退会済みユーザー

退会済みユーザー

2018/06/03 12:42

search.php内の以下のquery_postを削除し、function.phpを以下のように修正しました。 function change_posts_per_page($query) { /* 管理画面,メインクエリに干渉しないために必須 */ if( is_admin() || ! $query->is_main_query() ){ return; } if( is_search() ) { $query->set( 'post_type', array('shop') ); $query->set( 'paged',get_query_var( 'paged' ) ); $query->set( 'posts_per_page', '10' ); } if ( $query->is_archive('shop') ) { $query->set( 'posts_per_page', '10' ); } } add_action( 'pre_get_posts', 'change_posts_per_page' );
退会済みユーザー

退会済みユーザー

2018/06/03 18:12

pre_get_postでの配列のクエリの指定方法がわからなかったため、 取り急ぎ、query_postsで解決しました。 query_posts( array( 'tax_query' => $taxquerysp, 'meta_query' => $metaquerysp, 's' => $s, 'posts_per_page' => 10, 'paged' => $paged, ) );
guest

0

ベストアンサー

pre_get_postでの配列のクエリの指定方法がわからなかったため、
取り急ぎ、query_postsで解決しました。

query_posts( array(
'tax_query' => $taxquerysp,
'meta_query' => $metaquerysp,
's' => $s,
'posts_per_page' => 10,
'paged' => $paged,
)
);

投稿2018/06/03 18:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問