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

问题描述 投票:0回答:3

我在类别存档中使用 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();
wordpress loops archive categories
3个回答
7
投票

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

我意识到这是旧的,但我遇到了同样的问题。我使用的方法类似于您为我的类别存档提出的方法,但我也需要对 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

应该能够只添加你需要的参数并且可以开始了。


0
投票

虽然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);
© www.soinside.com 2019 - 2024. All rights reserved.