我修改了博客文章的 WordPress 主循环,使其根据提交的过滤器查询和循环不同类型的文章。
在 HTML 的开头,有一个带有几个按钮的表单作为选项,它类似于 SA 站点菜单:问题标签用户徽章未回答。
当访问者单击其中一个菜单按钮时,将提交一个新的 WP_Query。
选项下方是帖子循环,取决于提交的过滤器。
php 代码基本上是具有自定义功能的标准 wordpress 循环:
$args= !empty($_POST['filter']) ? $_POST['filter']:null;
get_option_nav();
if( my_loop_have_posts(array('filter'=>$args))):
while my_loop_posts(): the_my_loop_post();
get_template_part('contents');
endwhile;
endif;
一切正常,除了只有默认过滤器获得正确的分页链接。提交新过滤器后,当点击分页链接时,它会转到默认过滤器的页面。如何修改 wordpress 分页链接以使其适用于其他过滤器?
这是我用于查询参数的代码:
function get_args($args){
$defaults= array(
'order' => 'DESC',
'orderby' => 'modified',
'max_num_pages' =>5,
'paged' => get_paged (),
'post_status' => 'any',
'post_type' => array ('post', 'docs','topics'),
'posts_per_page' => 5,
)
$args = wp_parse_args ( $args, $defaults );
extract ( $args );
if(!empty($args['filter'])){
switch ($args['filter']){
case 'top_voted':
$args['post_type'] = 'docs';
$args['meta_key'] = '_vote_total';
$args['order'] = 'DESC';
$args['orderby']='meta_value_num';
break;
case 'unanswered_questions':
$args['post_type] = 'topics';
$args['blabla'] = 'blabla';
break;
default:
blabla;
break;
}
return $args;
}
和分页的代码:
function get_paged() {
global $wp_query;
if ( get_query_var( 'paged' ) ) {
$paged = get_query_var( 'paged' );
} elseif ( ! empty( $wp_query->query['paged'] ) ) {
$paged = $wp_query->query['paged'];
}
if ( ! empty( $paged ) )
return (int) $paged;
return 1;
}