martinjj
  • 0
Гуру

Архив пользовательских типов записей 404 с paginate_links

  • 0

Я использую функцию paginate_links для создания разбивки на страницы в моих архивах пользовательских типов сообщений, независимо от того, что я делаю, я получаю ошибку 404 при просмотре страницы 2 (т.е. щелкаю, чтобы перейти на одну страницу в следе разбивки на страницы).

Я проверил и исследовал и, кажется, ничего не получаю со всем этим. Вот мой запрос перед циклом внутри archive-MY_CUSTOM_POST_TYPE.php:

<?php

global $wp_query;

$args = array_merge( $wp_query->query, array( 'post_type' => 'sales', 'posts_per_page'  => 1, ) );

query_posts( $args );


if (have_posts()) :
while (have_posts()) : the_post();  

и ниже после конца цикла и выше wp_reset_query у меня есть

<?php endif; ?>

<div class="clear"></div><!-- / clear -->

<div class="pagination">

<?php 
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] :    $current = 1;

$pagination = array(
'base' => @add_query_arg('page','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => true,
'type' => 'plain'
);

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

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

echo paginate_links( $pagination );
?>

</div><!-- / paginate -->  

На моем loop-index.php это работает без проблем, но в цикле внутри Custom Post Type это не работает, у меня нет столкновений с дублированными слагами, так как я читал, что это может быть проблемой, поэтому я принимаю это как должное. это как-то связано с тем, как я запрашиваю сообщения перед циклом, какие-либо указатели?

с уважением

Мартин

Share
  1. Ну, я добился некоторого прогресса, хотя он далек от идеала, он работает. Что мне нужно было сделать, так это зайти в wp-admin >> чтение и установить количество сообщений на странице, равное тому, что у меня есть на моих страницах с пользовательскими типами сообщений, выполнение этой нумерации страниц работает, но, как я говорю, это далеко не идеально, так как я хочу 5 сообщений на настраиваемые типы сообщений и индекс страницы и 10 сообщений на странице для блога…

    • 0
  2. Исправление Мартина работает, но лучше использовать функцию pre_get_posts.

    Пример:

    function custom_type_archive_display($query) {
        if (is_post_type_archive('custom_type')) {
            $query->set('posts_per_page',1);
            return;
        }
    }
    
    add_action('pre_get_posts', 'custom_type_archive_display');
    
    • 0
  3. Если у кого-то еще такая же проблема, мой полный обходной путь:
    1) в wp-admin >> settings >> read установите сообщения в блоге, чтобы они отображались как 1.
    2) затем переопределите это в loop-blog.php на posts_per_page => 10.
    3 ) в файлах loop.php вашего пользовательского типа записи установите posts_per_page => 5.

    Помните, что это параметры, которые мне нужны, ваши потребности могут отличаться, суть в том, что установите сообщения блога в wp-admin на 1, вы можете настроить другое количество сообщений на_страницу в соответствии со своими потребностями.

    теперь все работает хорошо, немного хакерски, но, по крайней мере, это работает, поэтому мой следующий вопрос: >>> это ошибка wp?

    • 0
  4. Я знаю, что это старо, но у меня была та же проблема, и я решил ее, изменив постоянную ссылку страницы, которая вызывала ошибку 404.

    Это потому, что, по-видимому, у вас не может быть слаг страницы с тем же именем, что и ваш пользовательский тип записи.

    Все заслуги принадлежат Райану С. за то, что он поделился оригинальным решением: http://www.sutanaryan.com/2013/09/404-error-in-custom-post-type-pagination-wordpress/

    • 0

Оставить ответ

You must login to add an answer.