wp_pagenavi() с пользовательским wp_query()?

17 февр. 2011 г., 06:21:37
Просмотры: 50.7K
Голосов: 6
<?php
/*
Template Name: Projects
*/
?>

<?php get_header();?>

    <section id="content">
        <section id="main">

            <?php
                $loop = new WP_Query(array('post_type' => 'projects', 'posts_per_page' => 4));
                $i=1;
                while ( $loop->have_posts() ) : $loop->the_post();
            ?>

            <article class="post<?php if($i%2 == 0) { echo ' right'; }; $i++; ?>" id="post-<?php the_ID(); ?>">
                <h2><?php the_title(); ?></h2>
                <section class="entry">
                    <?php the_excerpt(); ?>
                </section>
            </article>

            <?php
                endwhile;
                wp_pagenavi();
            ?>

            <section id="map">
                <img src="<?php bloginfo('template_url') ?>/images/interactive-map.jpg" alt="Интерактивная карта" title="Интерактивная карта" />
            </section>
        </section>

<?php get_sidebar(); ?>

    </section>

<?php get_footer(); ?>

У меня настроен pagenavi сразу после endwhile. Однако он не работает. Кто-нибудь знает, как это можно исправить?

4
Комментарии

см. - http://wordpress.stackexchange.com/questions/4696/pagination-not-working-with-custom-loop (по сути, вам нужно перехватить глобальную переменную $wp_query и использовать её вместо $loop

onetrickpony onetrickpony
17 февр. 2011 г. 07:01:36

Я следовал указаниям оттуда, и теперь навигация отображается, но когда я перехожу на 2 страницу, получаю ошибку. Вот pastebin с моим кодом. Если вы сможете взглянуть и сказать, заметили ли что-то не так, я буду бесконечно благодарен. Спасибо. http://pastebin.com/RMZaE6Pi

J82 J82
17 февр. 2011 г. 07:52:56

какую ошибку вы получаете?

Bainternet Bainternet
17 февр. 2011 г. 11:45:56

@One Trick Pony: Можешь перенести свой комментарий в ответ, чтобы Джон мог его принять? Возможно, включи мой комментарий в упомянутый ответ, потому что в новой версии WP-Pagenavi можно передавать аргумент query. Джон задал уточняющий вопрос по поводу настройки пагинации.

Jan Fabry Jan Fabry
17 февр. 2011 г. 16:29:28
Все ответы на вопрос 2
10
19
wp_pagenavi( array( 'query' => $loop ) );

должно работать с приведённым выше кодом. Не перехватывайте основной запрос, если этого можно избежать.

17 февр. 2011 г. 16:28:20
Комментарии

Мой источник: http://plugins.trac.wordpress.org/browser/wp-pagenavi/trunk/core.php#L3

John P Bloch John P Bloch
17 февр. 2011 г. 16:29:13

Действительно, development-версия WP Pagenavi (2.74-alpha) поддерживает это.

scribu scribu
17 февр. 2011 г. 16:34:08

О, я не осознал, что это dev-версия. Ой!

John P Bloch John P Bloch
17 февр. 2011 г. 16:37:41

возможно ли это с paginate_links() ?

onetrickpony onetrickpony
17 февр. 2011 г. 16:46:15

paginate_links - это более базовая функция. Вместо передачи объекта запроса, вы указываете максимальное количество страниц, текущую страницу и несколько других параметров (например, формат URL и т.д.)

John P Bloch John P Bloch
17 февр. 2011 г. 16:56:16

@John P Bloch: Только что выпустил: http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html :)

scribu scribu
17 февр. 2011 г. 17:09:58

@scribu: проверил с пользовательским типом записи, и пагинация не получает активную страницу, если она > 1, когда включены постоянные ссылки. Возможно, это связано с этим: http://wordpress.stackexchange.com/questions/9537/pretty-paged-permalinks-in-custom-post-type-loop

onetrickpony onetrickpony
17 февр. 2011 г. 17:57:10

Вы включили параметр 'paged'? Если да, то вам стоит задать новый вопрос с приложенным примером кода. И, пожалуйста, не вините pagenavi; он просто генерирует ссылки. :)

scribu scribu
17 февр. 2011 г. 18:01:59

Да. Нет смысла создавать новый вопрос, так как я больше не использую этот плагин, просто отмечаю, что он не полностью поддерживает пользовательские типы записей. Вам стоит добавить ещё один аргумент в wp_pagenavi(), например 'current', в котором можно передать текущую страницу, например get_permalink()

onetrickpony onetrickpony
17 февр. 2011 г. 19:22:19

@john: у меня такая же проблема при использовании offset в пользовательском запросе постов. Пожалуйста, помогите! $loop = new WP_Query(array("paged=".get_query_var('paged')."&offset=1"));

Gowri Gowri
3 июн. 2011 г. 10:27:24
Показать остальные 5 комментариев
0
-1
<?php       // Пагинация
        if(function_exists('wp_pagenavi')) :
            wp_pagenavi( array( 'query' => $blog_posts_query ) );
        else : ?>
            <div class="navigation">
                <div class="alignleft"><?php previous_posts_link() ?></div>
                <div class="alignright"><?php next_posts_link() ?></div>
            </div>
<?php       endif;

                // Восстановление оригинальных данных поста
                wp_reset_postdata(); ?>
23 мар. 2018 г. 15:58:01