Nano Hash - криптовалюты, майнинг, программирование

Wordpress Custom Post-type Pagination 404 с WP-Pagenavi

Мне нужно получить два пользовательских типа сообщений для проекта, над которым я работаю. Я передаю их в post_type в виде массива. Спереди они разделены на два разных класса списков, смайлы и рекламу. Они появляются, но разбиение на страницы прерывается. Я установил свои постоянные ссылки с помощью %postname%, отредактировал настройки для навигации по страницам и все еще читаю 404.

URL должен читаться как /smiles/page/*/, что они и делают, но как 404.

Вот код.

        <?php 
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

        $the_query = new WP_Query( array( 
                  'post_type' => array ('smiles','ads'),
                  'order' => 'DESC',
                  'posts_per_page' =>'3',
                  'paged' => $paged ));

        while ( $the_query->have_posts() ) : $the_query->the_post();    
        ?>
            <?php if ($post->post_type == 'smiles') { ?>
            <li class=smile>
                <h3><?php the_author(); ?></h3>
                <a href="<?php the_permalink(); ?>" class=x-fi><img src="<?php echo get_first_image(); ?>" /></a>
                <p><?php the_excerpt(); ?></p>
                <?php echo getPostLikeLink( get_the_ID() ); ?>
                <a href="<?php the_permalink(); ?>">Read More / Comment...</a>
            </li>
            <?php } ?>

            <?php if ($post->post_type == 'ads') { ?>
            <li class=ad>
                <?php the_content(); ?>
            </li>
            <?php } ?>                  
        <?php endwhile; ?>
        </ul>
        <?php wp_pagenavi( array( 'query' => $the_query ) ); wp_reset_query(); ?>

Редактировать 1:

Просмотрел несколько постов. Изменил $the_query на $wp_query безрезультатно.

19.08.2015

  • Пробовали ли вы повторно сохранять постоянные ссылки codex.wordpress.org/Settings_Permalinks_Screen? 20.08.2015
  • да. Я переключил их на стандартные, а затем обратно. 20.08.2015

Ответы:


1

Хорошо, я понял.

Простое решение состояло в том, чтобы удалить плагин и добавить пользовательскую функцию для обработки разбиения на страницы. После этого я изменил количество сообщений для чтения на страницах «блога» на 1 и обновил постоянные ссылки. Затем заработала пагинация.

Полное решение:

functions.php

function pagination($pages = '', $range = 2) {  
     $showitems = ($range * 2)+1;  

     global $paged;
     if(empty($paged)) $paged = 1;

     if($pages == '')
     {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages)
         {
             $pages = 1;
         }
     }   

     if(1 != $pages)
     {
         echo "<div class='pagination'>";
         if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
         if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";

         for ($i=1; $i <= $pages; $i++)
         {
             if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
             {
                 echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
             }
         }

         if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>";  
         if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>";
         echo "</div>\n";
     }
}

архив-smiles.php

<?php   
                $the_query = new WP_Query( array( 
                          'post_type' => array ('smiles','ads'),
                          'order' => 'DESC',
                          'posts_per_page' =>'2',
                          'paged' => $paged
                          ));

                while ( $the_query->have_posts() ) : $the_query->the_post();    
                ?>
                    <?php if ($post->post_type == 'smiles') { ?>
                    <li class=smile>
                        <h3><?php the_author(); ?></h3>
                        <a href="<?php the_permalink(); ?>" class=x-fi><img src="<?php echo get_first_image(); ?>" /></a>
                        <p><?php the_excerpt(); ?></p>
                        <?php echo getPostLikeLink( get_the_ID() ); ?>
                        <a href="<?php the_permalink(); ?>">Read More / Comment...</a>
                    </li>
                    <?php } ?>

                    <?php if ($post->post_type == 'ads') { ?>
                    <li class=ad>
                        <?php the_content(); ?>
                    </li>
                    <?php } ?>                  
                <?php endwhile; ?>
                </ul>
                <?php pagination( $the_query->max_num_pages ); ?>
19.08.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..