web-dev-qa-db-ja.com

カスタム分類法が新しいWP_queryのposts_per_pageで機能しない(ページネーション問題)

それで、私は2度目のカスタム分類法をめちゃくちゃにしています、そして両方の例で私はquery_postsまたはWP_queryシナリオのいずれかでposts_per_page引数を使用するというこの問題に遭遇しました。 [次へ]または[前へ]ボタンをクリックすると404エラーが表示されます。カスタムパーマリンク構造を使用しても、デフォルトを使用しても同じ結果になります。ページ上の投稿数を管理する唯一の方法は、ダッシュボードの閲覧設定を使用することです。

私はこの同じ問題についてかなりの数の言及を見つけましたが、上で言及されたDashboard設定を除いてまだ実用的な解決策を見つけていません:

wordpress.org/support/topic/custom-taxonomy-navigation-problem-paged1-works-paged2-doesnt?replies=8#post-2093828

core.trac.wordpress.org/ticket/16168

wordpress.org/support/topic/custom-taxonomies-with-pagination-getting-404-page-not-found?replies=6#post-2093414

だから、ここで問題に取り組んでいるサイトイムです:

http://www.purekreation.com (ナビゲーション内のいずれかのセクションをクリックしてから、下部にある前のページに移動してみてください)

これが私の現在の(動作していない)コードです。

    <?php get_header(); ?>

    <div id="art">

        <?php global $query_string, $paged, $wp_query, $wp;
        $count = 0;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        echo $paged;
        ?>
        <?php $term = get_query_var('term'); echo $term;?>
        <?php $tax = get_query_var('taxonomy'); echo $tax;?>
        <?php
        $taxquery=new WP_Query(array('tax_query'=>array(array('taxonomy'=>$tax,'field'=>'slug','terms'=>$term)),'post_type'=>'art','showposts'=>1,'paged'=>$paged));
        while ( $taxquery->have_posts() ) : $taxquery->the_post(); ?>

    <?php $genre = wp_get_post_terms($post->ID, 'genre');?>
        <div id="post-<?php the_ID(); ?>" <?php post_class('post-'.$genre[0]->slug.' post-art');?>> 
            <h3 class="work-title"><?php the_title();?></h3>
            <?php get_the_10(); ?>
            <div class="the-content">
                <?php the_content(); ?>
            </div>
            <footer class="COL-10 clear">
                <small class="post-meta"><?php $terms = get_the_term_list( $post->ID, 'genre', 'Portfolio: ', ' ', '' );  echo $terms;?></small>
                <small class="post-meta">Project: <?php the_tags( '',', ','');?></small>
                <small class="post-meta">Client: <?php $meta = get_post_meta($post->ID, 'client', true); if($meta==''){echo 'Self';}else{echo $meta;}?></small>
                <small class="post-meta right"><a href="#masthead">Back to top</a></small>
                <div class="dash"></div>
            </footer>
        </div><!-- #post-## -->    
        <?php $count++; ?>
        <?php endwhile; ?>
                        <div id="nav-below" class="pagination">
        <?php if($taxquery->max_num_pages>1){?>
            <?php
            for($i=1;$i<=$taxquery->max_num_pages;$i++){?>
                    <a href="<?php bloginfo('url');?>/?<?php echo $tax;?>=<?php echo $term;?>&<?php echo 'paged=' . $i; ?>" <?php echo ($paged==$i)? 'class="selected"':'';?>><?php echo $i;?></a>
                    <?php
            }
            if($paged!=$taxquery->max_num_pages){?>
                    <a href="<?php bloginfo('url');?>/?<?php echo $tax;?>=<?php echo $term;?>&<?php echo 'paged=' . $i; //next link ?>">></a>
            <?php } ?>
    <?php } ?>
                        </div>
            <?php // Reset Post Data
            wp_reset_postdata();
             // End the loop. Whew.?>
    </div><!-- end #art -->
    <?php get_footer(); ?>

私は最も熟練したPHP人ではありませんが、私はWordpressについてまともな量を知っています、そしてこの問題は私に文字通りそれの上に睡眠を失っています。誰かがこの問題について何らかの意見を持っているならば、それは大いに感謝されるでしょう。

5
J. Millington

それでなければなりません..

$paged = (get_query_var('page')) ? get_query_var('page') : 1;

WP_Query in codex:

ページ付け注:get_query_var( 'page')を設定する必要があります。あなたのクエリがページネーションで動作するようにしたい場合。 Wordpress 3.0.2以降、get_query_var( 'paged')の代わりにget_query_var( 'page')を実行します。 WP_Query()のページ付けパラメータ 'paged'は変わりません。

6
Milo