3

archive.phpdefault にコードを追加して、カスタム ページを作成しましたarchive.php。そのページでページネーションを行いたいのですが、なぜ機能しないのかわかりません。

wp-pagenaviページネーションにはプラグインを使用しています。page not found2ページ目をクリックするとエラーが表示されます。よりわかりやすくするために、何が起こっているかの画像を投稿しています。

下の画像は、ページが読み込まれたときの様子です。私が赤でマークしたサイトアドレスを見ることができます: ここに画像の説明を入力

次は、「2」をクリックして 2 ページ目に移動したときのイメージです。ご覧のとおり、URL は../?m=201303&paged=2.

ここに画像の説明を入力

以下は、カスタム アーカイブ ページに使用するコードです。

<?php

get_header(); ?>

<div class="archive_page">

<?php 
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array_merge( $wp_query->query, 
        array( 'cat' =>'-1,-8,-9',
        'posts_per_page'=>'2',
        'paged' =>$paged));
      query_posts( $args );
     ?>
<?php if ( have_posts() ) : ?>

 <header class="page-header">
 <h1 class="page-title">
 <?php if ( is_day() ) : ?>
 <?php printf( __( 'Daily Archives: %s', 'twentyeleven' ), '<span>' . get_the_date() . '</span>' ); ?>
<?php elseif ( is_month() ) : ?>
<?php printf( __( 'Monthly Archives: %s', 'twentyeleven' ), '<span>' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyeleven' ) ) . '</span>' ); ?>
    <?php elseif ( is_year() ) : ?>
<?php printf( __( 'Yearly Archives: %s', 'twentyeleven' ), '<span>' . get_the_date( _x( 'Y', 'yearly archives date format', 'twentyeleven' ) ) . '</span>' ); ?>
<?php else : ?>
<?php _e( 'Blog Archives', 'twentyeleven' ); ?>
    <?php endif; ?>
</h1>
    </header>
<div id="navig">
    <?php if (function_exists('wp_pagenavi')){wp_pagenavi();}?>
</div>
<?php while ( have_posts() ) : the_post(); ?>
<div id="all_posts">
    <div id="auth_ava">
    <?php echo get_avatar( get_the_author_email(), '65');?>
    </div>
    <div class="post_title_archive">
    <?php 
    the_title();
    ?>
    </div>
       <div id="name_date_coment_tag">
           <div id="auth_dis_name">
        <?php the_author_posts_link();?>
       </div>
    <div class="border">|</div>
    <div id="posted_date_archive">
        <?php 
        the_time('F j, Y');
         ?> 
    </div>
    <div class="border">|</div>
    <div class="categories">
        Categories: <?php the_category(', '); ?> 
    </div>
    <div class="border">|</div>
    <div id="tags_archive">
        <?php 
            the_tags('Tags: ', ', ', '<br />'); 
        ?> 
    </div>
    </div>
    </div>
        <div class="excerpt_archive">
    <?php 
        the_excerpt();
    ?>
    </div>
    <?php endwhile; ?>
    <div id="navig">
       <?php if (function_exists('wp_pagenavi')){wp_pagenavi();}?>
    </div>
    <?php else : ?>
    <article id="post-0" class="post no-results not-found">
        <header class="entry-header">
    <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1>
    </header>
    <div class="entry-content">
         <p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven' ); ?></p>
        <?php get_search_form(); ?>
        </div>
    </article>
        <?php endif; ?>
    </div>
<?php get_footer(); ?>

長い質問で本当に申し訳ありません。私が達成したいことが明確であることを願っています。

4

1 に答える 1

0

次のようにしてみてください:

<?php
//the query using arguments above
        $wp_query = new WP_Query( $args );

        //use the query for paging
        $wp_query->query_vars[ 'paged' ] > 1 ? $current = $wp_query->query_vars[ 'paged' ] : $current = 1;

        //set the "paginate_links" array to do what we would like it it. Check the codex for examples http://codex.wordpress.org/Function_Reference/paginate_links
        $pagination = array(
            'base' => @add_query_arg( 'paged', '%#%' ),
            //'format' => '',
            'showall' => false,
            'end_size' => 4,
            'mid_size' => 4,
            'total' => $wp_query->max_num_pages,
            'current' => $current,
            'type' => 'plain'
        );

        //build the paging links
        if ( $wp_rewrite->using_permalinks() )
            $pagination[ 'base' ] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );

        //more paging links
        if ( !empty( $wp_query->query_vars[ 's' ] ) )
            $pagination[ 'add_args' ] = array( 's' => get_query_var( 's' ) );

        //run the query
        if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
?>

次の場所も参照してください。

https://wordpress.stackexchange.com/questions/32100/pagination-on-a-custom-page-template

http://wordpress.org/support/topic/custom-post-type-archive-page-pagination-isnt-working

これはあなたの問題を解決するのに役立つかもしれないと思います.

于 2013-04-16T07:11:59.107 に答える