2

我在页面上使用以下 php 代码来显示来自单个类别的每页 10 个帖子。

function my_page_of_posts5() {
    if (is_page('10')) {
        $custom_loop = new WP_Query('posts_per_page=10&cat=9');
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : 
            while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
                echo '<li><a class="archive-link" href="' 
                    . get_permalink() . '">' 
                    . get_the_title() 
                    . '</a> <span class="my-comment-count">( ';
                comments_number('0', '1', '%');
                echo ' )</span></li>';
                the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
        echo '</ul></div>';
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');

我正在使用论文 WordPress 主题框架。

我想在页面上的这些帖子之后显示分页。

我应该放什么代码来显示分页?

我试过使用 WP-Paginate 插件并将 wp-paginate(); 页面上的功能,但它不能正常工作。

需要另一种方法来解决它。

4

4 回答 4

1

在不了解更多有关您尝试使用时查询的确切行为的信息的情况下wp_paginate,我可以建议的最好的方法是添加'paged=' . get_query_var( 'paged' )到您的WP_Query参数中,commeça:

$custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . get_query_var( 'paged' ));

添加后, wp_paginate 可能对您有用。

试一试!

更新

好的,从头开始:

  1. 声明并获取paged查询变量
  2. 将其用作查询中的参数
  3. 打电话posts_nav_link获得必要的导航

你的整个片段应该像这样工作:

function my_page_of_posts5() {
    if (is_page('10')) {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // what page? if none, one
        $custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . $paged);
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
            echo '<li><a class="archive-link" href="' . get_permalink() . '">' . get_the_title() . '</a> <span class="my-comment-count">( ';
            comments_number('0', '1', '%');
            echo ' )</span></li>';
            the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
    echo '</ul></div>';
    posts_nav_link(); // your next and previous links
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');
于 2012-11-19T15:49:56.743 回答
1

尝试使用此代码,将其替换为您现在拥有的代码。
它添加了我一直使用的分页功能,不需要额外的插件。易于定制。

<?php
function my_page_of_posts5() {
    if (is_page('10')) {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // what page? if none, one
        $custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . $paged);
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
            echo '<li><a class="archive-link" href="' . get_permalink() . '">' . get_the_title() . '</a> <span class="my-comment-count">( ';
            comments_number('0', '1', '%');
            echo ' )</span></li>';
            the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
    echo '</ul></div>';
    theme_pagination();
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');

// based on http://www.kriesi.at/archives/how-to-build-a-wordpress-post-pagination-without-plugin
function theme_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 > 1 && $showitems < $pages)
            echo '<a href="'.get_pagenum_link($paged - 1).'" class="previous" >';
            echo _x('previous', 'paginate', THEME_L10n);
            echo '<span>previouw-arrow</span></a>';

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

        //if ($paged < $pages && $showitems < $pages)
        echo '<a href="'.get_pagenum_link($paged + 1).'" class="next" ><span>next-arrow</span>';
        echo _x('next', 'paginate', THEME_L10n);
        echo '</a>';
        echo "</div>\n";
    }
}
于 2012-11-29T13:27:55.983 回答
1

您可以尝试在示例中的代码末尾添加此分页代码:

//Set Blog Reading Settings to 10!
global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array( 'base'    => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
                            'format'  => '?paged=%#%',
                            'current' => max( 1, get_query_var( 'paged' ) ),
                            'total'   => $wp_query->max_num_pages,
                            'end_size'=> 1,
                            'mid_size'=> 5 ) );

该代码适用于普通免费主题的存档和类别页面,但您使用的不是免费的,也不是开源的,因此很难预测结果。

我认为应该删除帖子数量:

WP_Query('posts_per_page=10&cat=9')
// Just leave it like this:
WP_Query('cat=9')

原因是 WP 中每页的帖子数是在阅读设置中配置的。在查询中放置一个数量可能会阻止分页。不用说,分页必须有10多个帖子才能工作。

祝你好运!

于 2012-12-01T09:41:36.033 回答
0

有两种可能的解决方案:

(一世)。解决方案#1:

我希望你会认为wp-pagenavi是这里最好的解决方案。而且很容易将其集成到论文主题中。作为论文主题用户,您已经在使用论文openhook插件。

现在只需按照步骤在论文主题中添加pagenavi 。

  • 打开外观>论文 Openhook
  • 在内容之后查找。
  • 只需将代码粘贴到框中。<?php cr_pagenavi(); ?>
  • 勾选Execute PHP on this hook并点击保存。

(二)。解决方案#2:

1.首先我安装了一个插件,它是简单分页(它的字面意思是简单易用)。如果您正在使用论文,请将此代码复制并粘贴到 thesis_hook_after_content 中并点击保存。

<div class="pagination">
<?php wp_simple_pagination(); ?>
</div>

2.转到您的 custom_functions.php 并粘贴此代码以删除上一篇和下一篇文章

function no_home_post_nav() {
if (is_home())
  remove_action('thesis_hook_after_content', 'thesis_post_navigation');
}
add_action('thesis_hook_before_content','no_home_post_nav');

3.在您的主页上查看您的新分页并将其自定义为您想要的任何样式。

于 2012-12-06T07:14:23.647 回答