2011-09-21 99 views
3

我在类别存档中使用wp_query,以便我可以使用meta_query忽略具有某些元值的帖子。WordPress的 - 在类别归档中使用wp_query - 如何显示适当的类别?

问题是,因为我使用wp_query,它似乎忽略了当前正在查看的类别并显示所有类别。

有没有办法检索用户正在查看的类别(可能由url定义)并将其插入到wp_query参数数组中?

我见过this suggested solution on stack overflow,但必须有一个更简单的方法来做到这一点,因为当没有使用默认循环时,wordpress会自动显示正确的类别。

当前代码:

$query = array(
'meta_query' => array(
     array(
      'key' => 'Display', 
      'value' => 'Yes', 
     ) 
    ), 
    'paged'=> $paged 
); 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$pageposts = new WP_Query($query); 

if ($pageposts): 
while ($pageposts->have_posts()) : $pageposts->the_post(); 

回答

4

好了,这是我可以拿出我自己的最佳解决方案(使用single_cat_title设置变量):

$currentCategory = single_cat_title("", false); 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$query = array(
    'category_name' => $currentCategory, 

    'paged'=> $paged, 
    'posts_per_page' => '15' 
); 
$pageposts = new WP_Query($query); 
1

我意识到这是老,但我有同样的问题。我使用了类似于您为我的类别归档创建的方法,但我也需要使用WP Query来搜索search.php,这使我找到了一个解决方案。 WordPress的抄本有办法保存搜索原始查询,它似乎为一个类别归档工作,以及:

<?php 
global $query_string; 

$query_args = explode("&", $query_string); 
$search_query = array(); 

foreach($query_args as $key => $string) { 
    $query_split = explode("=", $string); 
    $search_query[$query_split[0]] = urldecode($query_split[1]); 
} // foreach 

$search = new WP_Query($search_query); 
?> 

http://codex.wordpress.org/Creating_a_Search_Page#Preserving_Search_Page_Results_and_Pagination

应该能够只需添加你所需要的参数,并很好去。