サポート » 使い方全般 » WP_Queryでページ送りされるのに吐き出し箇所のみ404エラーとなる

  • 解決済 miwarock777

    (@miwarock777)


    https://ja.forums.wordpress.org/topic/158593?replies=4の続きものなのですが、お聞きしたいことが別に出てきたため、別スレッドをたてさせていただきます。

    welcartをを使っております。
    トップページ(index.php))にWP_Queryで、
    カテゴリーID 22 の記事を20件表示させ、ページ送りをつけました。

    ページ送りは動くようになり、記事数分のリンクも正常に動いています。
    しかし、<?php bloginfo(‘name’); ?>で吐き出される文字列の箇所がすべて404エラーのものとなってしまうのです。
    今の場合、ページを送っても、index.phpのtitleタグを変えずにそのまま表示させたいのですが、どうしたらよいのでしょうか。

    <?php usces_the_item(); //オブジェクト準備 ?>
    -<?php $my_query = new WP_Query( $query_string . '&posts_per_page=50&post_type=post&cat=22' ); ?>
    -<?php if ($my_query->have_posts()) : ?>
    -<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
    
    ---ここにループ--
    -<?php endwhile; ?>
    -</ul>
    -<?php else : ?>
    -<p>記事がなかった時の表示</p>
    -<?php endif; ?>
    -<div id="pagenav"><?php if(function_exists('wp_pagenavi')){
    -wp_pagenavi(array('query'=>$my_query)); } ?></div>
    <?php wp_reset_postdata(); ?>
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • welcart開発フォーラムの方で解決できましたので、リンクをしておきます。
    http://www.welcart.com/community/forums/topic/top%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%88index-php%EF%BC%89%E3%81%AB%E6%8E%B2%E8%BC%89%E3%81%97%E3%81%9F%E5%95%86%E5%93%81%E4%B8%80%E8%A6%A7%E3%81%AE%E3%80%81%E3%83%9A%E3%83%BC%E3%82%B8%E9%80%81

    トップページには、本来の global $posts があります。WP-pagenavi はこの本来のループに対してのものとなり、テンプレート内で行っている query_posts() としては正常に動作しません。
    トップページで、ページングを行いたいという事でしたら query_posts() を使わずに、トップページ本来のループを、pre_get_posts フックを使って作ってやると良いかと思います。

    ということで、welcartではTOPページにおいて、テンプレート内で行っているquery_postsは正常に動かないそうです。
    pre_get_posts を使うことでうまくいきましたので、ここに書いておきます。

    カテゴリースラッグ「item」の商品を、TOPページに20件表示してページを送り(WP-pagenavi)をしています。

    function getitemorder( $query ) {
    	if ( is_admin() || ! $query->is_main_query() )
    		return;
    
    	global $wp_query, $usces;
    	if ( $query->is_home() ) {
    		$wp_query->query_vars = $usces->get_item_cat_ids();
    		$wp_query->set('category_name','item');
    		$wp_query->set('posts_per_page',20);
    		return;
    	}
    }
    add_action( 'pre_get_posts', 'getitemorder' );

    TOPページ(index.php)のメインループはいつも通りのものです。

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    --ここにループ--
    <?php endwhile; ?>
    <?php else : ?>
    --記事がないときの表示--
    <?php endif; ?>
    <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「WP_Queryでページ送りされるのに吐き出し箇所のみ404エラーとなる」には新たに返信することはできません。