Wordpress - разбиение на страницы на пользовательском шаблоне не отображается (Lollum Framework - Lotusflower Theme) - PullRequest
0 голосов
/ 03 октября 2019

Я работал с темой WordPress под названием Lotusflower. Я создал шаблон страницы (копия вставила index.php) и использовал WP_Query для получения сообщений, которые я хочу показать на этой странице. Однако встроенная функция разбиения на страницы тем, похоже, здесь не работает. Не могли бы вы объяснить, почему?

//Query for the posts
<?php
/**
 * Lollum
 * 
 * The main template file
 *
 * This is the most generic template file in a WordPress theme and one of the
 * two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * For example, it puts together the home page when no home.php file exists.
 *
 * @package WordPress
 * @subpackage Lollum Themes
 * @author Lollum <support@lollum.com>
 *
 */
/*
Template Name: What's New
*/
$postsPerPage = 3;
$page = 1;
$post_query = new WP_Query(array(
    'post_status' => 'publish',
    'orderby' => 'publish_date',
    'order' => 'DESC',
    'paged' => $page,
    'posts_per_page' => $postsPerPage
)); ?>

Затем я использую это, чтобы получить последние сообщения на моем шаблоне пользовательской страницы:

<?php // START the loop 
?>
<?php while ($post_query->have_posts()) : $post_query->the_post(); ?>
<?php #CUSTOM ADDITIONS : SHOW VIEWS echo wpb_get_post_views(get_the_ID()); 
?>

<?php get_template_part('content/content', get_post_format()); ?>

<?php endwhile; ?>
<?php // END the loop 
?>

<?php lollum_pagination(); ?>

<?php // lollum_pagination_default(); 
?>

</div>

где функция lollum_pagination () выглядит такэто:

    /**
 * Pagination
 */
if (!function_exists('lollum_pagination')) {
    function lollum_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 "<nav class='pagination'>";
            echo "<h2 class='assistive-text'>" . __('Post navigation', 'lollum') . "</h2>";
            if($paged > 1 && $showitems < $pages) echo "<a href='" . get_pagenum_link($paged - 1) . "'>&laquo;</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) . "'>&raquo;</a>";  
            echo "</nav>\n";
        }
    }
}

Я не стал возиться с этой функцией. Я думаю, это не работает, потому что мне нужно использовать другой способ для запроса сообщений? Это было бы мое предположение. На моем index.php (куда я скопировал код) точно такой же кусок кода работает отлично (там я не использовал пользовательский массив, потому что я думаю, он напрямую запрашивает сообщения)

Заранее спасибо

1 Ответ

0 голосов
/ 03 октября 2019

Я заработал, выполнив следующее:

  1. Измените имя $ post_query на $ wp_query (потому что функция использует это имя)
  2. используйте 'paged' =>get_query_var ('paged') вместо целочисленной страницы $. для пользовательских запросов кажется, что вам нужно использовать запрос var.

Это решило его.

...