为了账号安全,请及时绑定邮箱和手机立即绑定

Wordpress 自定义帖子类型分页 - /page/2/ 未找到

Wordpress 自定义帖子类型分页 - /page/2/ 未找到

PHP
慕盖茨4494581 2023-03-04 10:52:30
这真让我抓狂。我已经尝试了所有我能找到的解决方案,但仍然不适合我。我有一个自定义帖子类型。/** * Videos Custom Post Type */function videos_post_type() {    register_post_type( 'videos', array(        'labels' => array(            'name' => 'Videos',            'singular_name' => 'Video',            'add_new_item' => 'Add New Video',            'add_new' => 'Add New Video',            'edit_item' => 'Edit Video',            'new_item' => 'New Video',            'all_items' => 'All Videos'        ),        'public' => true,        'has_archive' => true,        'rewrite' => array( 'slug' => 'videos' ),        'menu_icon' => 'dashicons-format-video'    ));}add_action( 'init', 'videos_post_type' );除了“存档”页面上的分页外,一切正常。分页链接正确显示,但当我单击“下一步”时,它以页面未找到错误结束。<div class="ast-row">        <?php            $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;            $loop = new WP_Query( array(            'post_type' => 'videos',            'posts_per_page' => 1,            'orderby'=> 'menu_order',            'paged'=> $paged            ) );            while ( $loop->have_posts() ) {                $loop->the_post(); ?>                <div class="ast-col-md-4">                    <?php echo the_content(); ?>                </div>            <?php } ?>        </div>        <div class="ast-row">            <?php                echo paginate_links( array(                   'total' => $loop->max_num_pages               ) );            ?>        <?php  wp_reset_postdata(); ?>        </div>此外- * 我曾尝试保存永久链接 * 我曾尝试更改永久链接结构 * 我曾尝试使用 query_posts 而不是 WP_Query --- 这些都不起作用。我还应该提到我没有创建 single-videos.php 模板(因为我不需要它用于这种帖子类型)但我认为这与此问题没有任何关系。如果我错了,请纠正我。我只是无法理解它。如果有帮助,我正在使用 Astra 主题。
查看完整描述

4 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

试试下面(替换你的html)


<?php

          global $loop;

          $query = $query ? $query : $loop;

          $big = 999999999;


          $paginate = paginate_links( array(

            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),

            'type' => 'array',

            'total' => $query->max_num_pages,

            'format' => '?paged=%#%',

            'current' => max( 1, get_query_var('paged') ),

            'prev_previous'  =>('&larr; Older posts'),

            'prev_next'          => ( 'Newer posts &rarr;' ),

            'prev_text' => __('&laquo;'),

            'next_text' => __('&raquo;'),

          ));

          if ($query->max_num_pages > 1) :

        ?>


        <div class="paginate">

          <ul class="pagination">

            <?php

              foreach ( $paginate as $page ) {

                echo '<li>' . $page . '</li>';

              }

            ?>

          </ul>

        </div>

         <?php endif; ?>


查看完整回答
反对 回复 2023-03-04
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我最近遇到了同样的问题。不知道是什么问题,但这对我有用。


$pagination = [

    'base' => @add_query_arg('paged','%#%'),

    'format' => '',

    'total' => $the_query->max_num_pages,

    'current' => get_query_var('paged') ?? 1,

    'show_all' => false,

    'mid_size' => 4,

    'type' => 'list',

    'next_text' => '&raquo;',

    'prev_text' => '&laquo;'

];

echo paginate_links($pagination);


查看完整回答
反对 回复 2023-03-04
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我遇到了同样的问题,只是发现我的问题的原因是我为我的自定义帖子类型和显示新 WP_Query 的页面设置了相同的 slug。



查看完整回答
反对 回复 2023-03-04
?
杨魅力

TA贡献1811条经验 获得超6个赞

代替


$big = 999999999; 

            echo paginate_links( array(

               'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),

               'format' => '?paged=%#%',

               'current' => max( 1, get_query_var('paged') ),

               'total' => $loop->max_num_pages

           ) );


  global $loop;

  $query = $query ? $query : $loop;

  $big = 999999999;


  $paginate = paginate_links( array(

    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),

    'type' => 'array',

    'total' => $query->max_num_pages,

    'format' => '?paged=%#%',

    'current' => max( 1, get_query_var('paged') ),

    'prev_previous'  =>('&larr; Older posts'),

    'prev_next'          => ( 'Newer posts &rarr;' ),

    'prev_text' => __('&laquo;'),

    'next_text' => __('&raquo;'),

  ));

  if ($query->max_num_pages > 1) :

如果不起作用,我有另一个解决方案,请问我


查看完整回答
反对 回复 2023-03-04
  • 4 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信