我有一个正在运行的图片库,我正在将其转换为一个快捷码,这样定位就可以灵活,我不必反复复制代码。
我遇到的问题是分页无法前进到下一页。图像显示,分页显示,页码显示。。。但当我尝试点击第二页或第三页时,图像、页码和页码都不会改变。URL会改变,内容不会改变。
我有一个带有一些手动代码的页面(当单击分页时,该页面会工作、前进或更改)。
我正在工作的网站是:http://joshrodg.com/test/banquet/2017-induction-banquet/. 我的测试短代码位于顶部(2017年入职宴会下方),有效的短代码位于底部(手动代码)。
我的短代码如下所示:[halloffame rml_folder="16"]
我的函数如下所示:
function picture_gallery($atts){
extract(shortcode_atts(array(
\'rml_folder\' => 1
), $atts));
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
query_posts("post_status=inherit&post_type=attachment&rml_folder=".$rml_folder."&orderby=title&order=asc&posts_per_page=12&paged=".$paged);
if ( have_posts() ) :
$return_string .= \'<div id="album">\';
while ( have_posts() ) : the_post();
$return_string .= \'<div class="gallery">\';
$image = wp_get_attachment_image(get_post_thumbnail_id($post->ID), \'medium\');
$return_string .= \'<a href="\'.wp_get_attachment_url($post->ID).\'" class="simplelightbox">\'.$image.\'</a>\';
$return_string .= \'<p>\'.get_the_title().\'</p>\';
$return_string .= \'</div>\';
endwhile;
$return_string .= \'</div>\';
endif;
$return_string .= \'<div id="pagi">\';
$return_string .= \'<div class="wrap">\';
$args = array(
\'prev_text\' => __(\'<span class="left"></span><span class="ion-android-arrow-dropleft"></span>\'),
\'next_text\' => __(\'<span class="ion-android-arrow-dropright"></span><span class="right"></span>\')
);
$return_string .= paginate_links($args);
$return_string .= \'</div>\';
$return_string .= \'</div>\';
global $wp_query;
$current_page = get_query_var( \'paged\' );
$pages = $wp_query->max_num_pages;
$return_string .= \'<p align="center">(Page: \'.$current_page.\' of \'.$pages.\')</p>\';
wp_reset_query();
return $return_string;
}
function register_shortcodes(){
add_shortcode(\'halloffame\', \'picture_gallery\');
}
add_action( \'init\', \'register_shortcodes\');
因为这是使用手动代码,所以我猜我的短代码有些地方不太正确。
有什么想法吗?
**更新**
所以,在页面上http://joshrodg.com/test/banquet/, 分页已断开,但打开http://joshrodg.com/test/banquet/2017-induction-banquet/ 分页工作正常。2017-induction-banquet
是原始帖子,是的子帖子http://joshrodg.com/test/banquet/. 在…上http://joshrodg.com/test/banquet/, 我正在显示所有子页面的内容。所以,短代码本身是有效的,只是不在这个页面上-所以我的循环可能有问题。
此页面的循环如下所示:
<?php query_posts("order=asc&orderby=menu_order&posts_per_page=-1&post_type=page&post_parent=".$post->ID); ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="wrap">
<h2><?php the_title(); ?></h2>
</div>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
我想这页上的短代码和循环中的循环可能有冲突。
原始页面上的分页如下所示:http://joshrodg.com/test/banquet/2017-induction-banquet/page/2/
父页上的分页如下所示:http://joshrodg.com/test/banquet/page/2/
我不确定这是否有什么不同,但我认为这值得一提。
谢谢,乔希
最合适的回答,由SO网友:Josh Rodgers 整理而成
所以,我设法找到了一个解决办法。
我试图改变query_posts
在我的短代码上,但由于某种原因,我无法使其工作。我更改了页面上的查询,解决了问题。
查询现在如下所示:
<?php
$args = array(
\'order\' => \'asc\',
\'orderby\' => \'menu_order\',
\'posts_per_page\' => -1,
\'post_type\' => \'page\',
\'post_parent\' => $post->ID
);
$query = new WP_Query( $args );
?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="wrap">
<h2><?php the_title(); ?></h2>
</div>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
短代码没有更改(删除连字符除外)。
因此,这两个查询相互冲突。不同的查询query_posts
和WP_Query
已修复此问题。
谢谢,乔希