wp_query with parameters

时间:2012-11-03 作者:p.a.

我有一个自定义搜索页面,可通过该页面选择:

One or ALL categories
One or ALL tags
One or ALL authors
A search string or no search string
在结果页面上,当我选择了值时,wp\\u查询就会工作。但我如何指示将某个参数设置为ALL?例如,如何设置“搜索所有类别”?

也许我需要打破我的参数,只有当我得到值时才添加到它们?但我该怎么做呢?

谢谢

编辑我修改了wp查询,现在如下所示。一切都很好,但我没有分页!

$args = array( \'order\' => \'DESC\', \'orderby\' => \'date\',  \'posts_per_page\'=> 10 ); 
if ( \'0\' != $category ) { $args[\'cat\'] = $category; } 
if ( \'0\' != $tag ) { $args[\'tag\'] = $tag; } 
if ( \'0\' != $author ) { $args[\'author\'] = $author; } 
if ( \'\' != $search ) { $args[\'s\'] = $search; } 
$the_query = new WP_Query( $args );
while ($the_query-> have_posts()) : $the_query->the_post();
....
endwhile;
wp_pagenavi( array( \'query\' => $the_query ) );

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

假设您有变量来保存每个变量的自定义值:

  • $category
  • $tag
  • $author
  • $search
然后只需创建一个参数数组,并有条件地向其中添加键:

$custom_query_args = array(
    // Set any default args here 
    // NOTE: This is where you\'d add
    // things like pagination (posts_per_page),
    // order/sort parameters, and the like
    \'posts_per_page\' => 10,
    \'orderby\' => \'date\',
    \'order\' => \'DESC\'
);

// If user defines $category, add it
if ( \'\' != $category ) {
    $custom_query_args[\'cat\'] = $category;
}
// If user defines $tag, add it
if ( \'\' != $tag ) {
    $custom_query_args[\'tag\'] = $tag;
}

// If user defines $author, add it
if ( \'\' != $author ) {
    $custom_query_args[\'author\'] = $author;
}

// If user defines $search, add it
if ( \'\' != $search ) {
    $custom_query_args[\'s\'] = $search;
}

// Run the query
$custom_query = new WP_Query( $custom_query_args );
注意:如何定义$category, $tag, $author, 和$search 超出了此答案的范围。

如果需要,请编辑include a meta query (i.e. custom field) parameter, 您也可以这样做:

假设(用户定义)$post_meta_key 和(静态)$post_meta_key:

// If user defines $post_meta_value, add it
if ( \'\' != $post_meta_value ) {
    $custom_query_args[\'meta_query\'] = array(
        array(
            \'key\' => $post_meta_key,
            \'value\' => $post_meta_value,
            \'compare\' => \'=\',
        )
    );
}

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post