此功能一直有效,直到更新了wordpress,现在自定义页面上的分页重复了第一页。例如,第2页只会显示第1页的内容。
我一直在寻找,没有任何帮助。
我正在使用以下方法在wordpress安装之外调用wordpress函数
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
然后wordpress循环是(它可能已经过时且有问题,但这是当时唯一可行的循环)
$paged = ( get_query_var( 'page' ) ) ? absint( get_query_var( 'page' ) ) : 1;
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 20,
//'showposts' => 20,
'orderby'=> 'menu_order',
'paged' => $paged,
'meta_query' => array(
array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => '=',
)
)
);
query_posts( $args); ?>
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/includes/producttemplate.php";
include_once($path);
?>
</div>
<br class="clear" />
<div class="wrapper">
<div class="pagination">
<p><br /><?php pagination_bar($args); if(!$_GET['viewall']){ ?>
<br />
<a class="all" href="<?php echo add_query_arg( array( 'view' => 'all' ), get_pagenum_link(1) ); ?>">Show All</a><br /></p>
<?php } }?>
<?php wp_reset_query(); ?>
然后我的自定义分页功能是
//Pagenation
function pagination_bar() {
global $wp_query;
$total_pages = $wp_query->max_num_pages;
if ($total_pages > 1){
$current_page = max(1, get_query_var('paged'));
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
echo paginate_links(array(
'base' => @add_query_arg('paged','%#%'),
'format' => '?paged=%#%',
'current' => $paged,
'total' => $total_pages,
));
}
}
谢谢
答案 0 :(得分:0)
以下是从第二个代码转储中复制的两行:
$current_page = max(1, get_query_var('paged'));
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
注意query_var是paged
吗?
现在,从第一个转储的第一行看一下此副本:
$paged = ( get_query_var( 'page' ) ) ? absint( get_query_var( 'page' ) ) : 1;
注意区别吗? page
,而不是paged
。
答案 1 :(得分:0)
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'charters',
'cat'=> $cat,
'post_per_page'=> 6,
'paged' => $paged
);
$my_query = new WP_Query( $args );
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p><?php
endwhile;
}
wp_reset_query();
?>
<?php echo pnavigation( $query ); ?>
然后您需要在function.php中添加以下代码:
function pnavigation( $wp_query ) {
$big = 999999999; // need an unlikely integer
$pages = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'prev_next' => false,
'type' => 'array',
'prev_next' => TRUE,
'prev_text' => '←',
'next_text' => '→',
) );
if( is_array( $pages ) ) {
$paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
echo '<ul class="pagination pagination-lg">';
foreach ( $pages as $page ) {
echo "<li>$page</li>";
}
echo '</ul>';
}
}
还将此代码添加到function.php中,您只需要用页面url替换url(客户端推荐)
function pagination_rewrite() {
add_rewrite_rule('client-testimonials/page/?([0-9]{1,})/?$', 'index.php?pagename=client-testimonials&paged=$matches[1]', 'top');
}
add_action('init', 'pagination_rewrite');
答案 2 :(得分:0)
将头发上剩下的东西拉出来后,我解决了。就是这个部分
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
需要成为
require $_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php';
我目前正在将两者都用作备用。我不知道是否只需要合而为一。如果有人有更多信息,可以安全使用两者吗?