Wordpress - 在类别存档中使用 wp_query - 如何显示适当的类别?

Posted

技术标签:

【中文标题】Wordpress - 在类别存档中使用 wp_query - 如何显示适当的类别?【英文标题】:Wordpress - Use wp_query in category archive - how to display the appropriate category? 【发布时间】:2011-09-21 04:52:09 【问题描述】:

我在类别存档中使用 wp_query,以便我可以使用 meta_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();

【问题讨论】:

【参考方案1】:

嗯,这是我自己能想到的最佳解决方案(使用 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);

【讨论】:

显示当前页面类别以及子类别帖子的最佳解决方案。【参考方案2】:

我意识到这是旧的,但我遇到了同样的问题。我使用了类似于您为我的类别存档提出的方法,但我也需要使用 WP Query 来搜索 search.php,这导致我寻找解决方案。 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

应该能够只添加您需要的参数并且一切顺利。

【讨论】:

以上是关于Wordpress - 在类别存档中使用 wp_query - 如何显示适当的类别?的主要内容,如果未能解决你的问题,请参考以下文章

在 Wordpress Datewise 中为特定类别创建存档

突出显示存档中的类别 - WordPress

填充不包括某些帖子类别的自定义 WordPress 帖子存档

如何在 Wordpress 的存档页面上显示所有类别的帖子?

输出 WordPress 类别描述

按子类别组织WordPress类别存档列表