Пагинация настраиваемого типа сообщения Wordpress - / страница / 2 / не найдена - PullRequest
0 голосов
/ 08 мая 2020

Это сводит меня с ума. Я пробовал все решения, которые мог найти, но все еще не работал у меня.

У меня есть собственный тип сообщения.

/**
 * 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>

Также пробовал следующее: echo_paginate_links ()

                $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
               ) );

Более того - * Я пытался сохранить постоянную ссылку * Я пытался изменить структуру постоянной ссылки * Я пробовал query_posts вместо WP_Query --- ничего из этого не сработало.

Я также должен упомянуть, что я не создавал шаблон с одним видео. php (потому что он мне не нужен для этого типа публикации), но я не думаю, что это имеет какое-либо отношение к этому вопрос. Пожалуйста, поправьте меня, если я ошибаюсь. Я просто не могу понять это. Я использую тему Astra, если это помогает.

Пожалуйста, поделитесь своими предложениями. Спасибо!

Ответы [ 3 ]

0 голосов
/ 09 мая 2020

Замените

$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) :

Если не работает, у меня есть другое решение, просто спросите меня

0 голосов
/ 12 мая 2020

Попробуйте ниже (замените 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; ?>
0 голосов
/ 08 мая 2020

Недавно у меня была такая же проблема. Не уверен, в чем проблема, но у меня это сработало.

$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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...