我在类别存档中使用 wp_query,这样我就可以使用 meta_query 来忽略具有某些元值的帖子。
问题是因为我用的是wp_query,所以好像忽略了当前正在查看的分类,显示了所有的分类
有没有办法检索用户正在查看的类别(可能由 url 定义)并将其插入 wp_query 参数数组?
我已经看到这个关于堆栈溢出的建议解决方案,但是必须有一个更简单的方法来做到这一点,因为当没有使用默认循环时,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();
嗯,这是我自己能想到的最好的解决方案(使用 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);
我意识到这是旧的,但我遇到了同样的问题。我使用的方法类似于您为我的类别存档提出的方法,但我也需要对 search.php 使用 WP 查询,这让我开始寻找解决方案。 wordpress codex 有一种方法可以保留原始查询以供搜索,而且它似乎也适用于类别存档:
<?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
应该能够只添加你需要的参数并且可以开始了。
虽然waffl的解决方案有效,但我更喜欢使用“tax_query”分类参数.
$term = get_queried_object();
$termID = $term->term_taxonomy_id;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = array(
'tax_query' => array(
array(
'taxonomy' => 'category', //you change this to a custom taxonomy if needed
'field' => 'term_id',
'terms' => $termID
)
),
'paged'=> $paged,
'posts_per_page' => '15'
);
$pageposts = new WP_Query($query);