【问题标题】:Wordpress pagination numberWordpress 分页数
【发布时间】:2019-03-21 15:09:07
【问题描述】:

我想添加一个数字导航以便浏览帖子。

在我的主题主页中,我有显示帖子的代码。

<div class="container mt-80 mb-80">
<div class="card-columns">

<?php $args['tax_query'] = array(
    array(
    'taxonomy' => 'category',
    'terms' => array('portfolio'),
    'field' => 'slug',
    'operator' => 'NOT IN',
),
);

query_posts($args);?>

<?php while(have_posts()) : the_post(); ?>
    <div class="card">

    <div class="card-body">
    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
    <?php the_post_thumbnail('full', array('class' => 'image-post card-img-top')); ?>
        </a>
        <h3 class="card-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <p class="card-text"><?php echo get_the_excerpt(); ?> ...</p> 
                <span class="entry-date"><?php echo get_the_date(); ?></span>
                    </div>
                    </div>
                    <?php endwhile; wp_reset_query(); ?>
                        </div>
                        </div>

为了显示分页,我尝试在 function.php 上添加此代码
我想在帖子下方插入页码以浏览它们,但我不想安装任何插件。

function numeric_posts_nav() {

if( is_singular() )
    return;

global $wp_query;

/** Stop execution if there's only 1 page */
if( $wp_query->max_num_pages <= 1 )
    return;

$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max   = intval( $wp_query->max_num_pages );

/** Add current page to the array */
if ( $paged >= 1 )
    $links[] = $paged;

/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
    $links[] = $paged - 1;
    $links[] = $paged - 2;
}

if ( ( $paged + 2 ) <= $max ) {
    $links[] = $paged + 2;
    $links[] = $paged + 1;
}

echo '<div class="navigation"><ul>' . "\n";

/** Previous Post Link */
if ( get_previous_posts_link() )
    printf( '<li>%s</li>' . "\n", get_previous_posts_link() );

/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
    $class = 1 == $paged ? ' class="active"' : '';

    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );

    if ( ! in_array( 2, $links ) )
        echo '<li>…</li>';
}

/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
    $class = $paged == $link ? ' class="active"' : '';
    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}

/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
    if ( ! in_array( $max - 1, $links ) )
        echo '<li>…</li>' . "\n";

    $class = $paged == $max ? ' class="active"' : '';
    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}

/** Next Post Link */
if ( get_next_posts_link() )
    printf( '<li>%s</li>' . "\n", get_next_posts_link() );

echo '</ul></div>' . "\n"; }

这个在 index.php 上

<?php numeric_posts_nav(); ?>

出现导航但无法正常工作。有谁知道为什么?

【问题讨论】:

    标签: php wordpress pagination


    【解决方案1】:

    将以下代码放入function.php文件中

    function pagination_nav() {
     global $wp_query;
     if ( $wp_query->max_num_pages > 1 ) { ?>
        <nav class="pagination" role="navigation">
            <div class="nav-previous"><?php next_posts_link( '&larr; Older posts' ); ?></div>
            <div class="nav-next"><?php previous_posts_link( 'Newer posts &rarr;' ); ?></div>
        </nav>
      }
    }
    

    以及 index.php 文件中的这段代码:

    分页导航();

    【讨论】:

      【解决方案2】:

      在参数中添加下面的东西

      $args = array(
          'post_per_page' => 10,
          'paged'=> 'paged', //'paged' for the home page and for other pages we need to set 'page',
          'tax_query'=> array(
                       'taxonomy' => 'category',
                       'terms' => array('portfolio'),
                        'field' => 'slug',
                         'operator' => 'NOT IN',
                         ),
           );
      

      在循环结束后添加函数

      <?php numeric_posts_nav(); ?>
      

      【讨论】:

      • :'( ...也许是函数文件中的代码不能正常工作。我有一个标题,以最后一篇文章的封面作为背景,当我点击页面时数字标题更改..但帖子保持不变..非常感谢您的帮助!
      【解决方案3】:
          <?php    
          $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
              $args = array(
                  'post_per_page' => 10,
                  'paged'=> $paged, 
                  'tax_query'=> array(
                               'taxonomy' => 'category',
                               'terms' => array('portfolio'),
                                'field' => 'slug',
                                 'operator' => 'NOT IN',
                                 ),
                   ); ?>
                   <?php $wp_query = new WP_Query($args); ?>
                      <?php if ($wp_query->have_posts()) : ?>
                              <?php while ( $wp_query -> have_posts() ) : $wp_query->the_post(); ?>
                                // Post content goes here...
                              <?php endwhile; ?>
                              <?php numeric_posts_nav(); ?>
                      <?php endif; ?>
                      <?php wp_reset_postdata(); ?>
      

      【讨论】:

        猜你喜欢
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-19
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多