带有自定义帖子类型和分类的WP_Query()--是否获取所有术语?

时间:2015-03-13 作者:tdc

我有以下几点

自定义帖子类型:lessonsubject<包含以下术语math, reading, 等)我已经配置了我的页面,以便用户可以通过输入分类法“主题”作为查询变量来过滤结果:

http://www.myWebsiteURL.com/lessons&lc=study-skills

这对于获取单个分类法类别非常有用,但是我很难在一个请求中获取所有分类法类别(例如,对于概述/未过滤页面)。

以下是我构建查询的方式:

<?php
    /* if URL query value is a valid category, get all lessons for that category.
       If it is not a valid category (or not category is provided), get ALL lessons. */

    $args = ["post-type"=>"lesson", "post-status" => "publish"];
    $validCats = [\'study-skills\',\'time-management\',\'math\',\'tutoring\',\'reading\',\'online-learning\'];
    if ( isset($_GET[\'lc\']) && in_array($_GET[\'lc\'], $validCats) ) {
        $args["subject"] = $_GET[\'lc\'];
    } else {
        $arg["subject"] = "*"; // ??? what goes here?
    }
    $lessons = new WP_Query($args);
?>

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

我宁愿使用完全正确的tax_query 在这里这个{tax} 语法根据文档进行折旧

A.tax_query 在这里也更好,因为您将处理一系列术语。当您的URL为

http://www.myWebsiteURL.com/lessons
这意味着应显示所有术语。这意味着您需要使用$validCats 数组作为查询项。

考虑到这一点,我将您的代码略微更改为以下内容:(警告:未测试,我假设您在这里使用的是术语slug,因此我将field 相应的参数

<?php
    /* if URL query value is a valid category, get all lessons for that category.
       If it is not a valid category (or not category is provided), get ALL lessons. */

    $validCats = [\'study-skills\', \'time-management\', \'math\', \'tutoring\', \'reading\', \'online-learning\'];

    if ( isset( $_GET[\'lc\'] ) && in_array( $_GET[\'lc\'], $validCats ) ) {
        $terms = $_GET[\'lc\'];
    } else {
        $terms = $validCats;
    }

    $paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
    $args = [
        \'post_type\'   => \'lesson\', 
        \'post_status\' => \'publish\',
        \'paged\'       => $paged,
        \'tax_query\'   => [
            [
                \'taxonomy\' => \'subject\',
                \'field\'    => \'slug\',
                \'terms\'    => $terms
            ]
        ]
    ];

    $lessons = new WP_Query($args);
?>

结束

相关推荐

DATE_QUERY未返回日期范围内的某些帖子

我用get\\u posts的date\\u查询参数得到了一些非常奇怪的结果。我有一个职位:date(\'Y-m-d H:i\', get_post_time(\'U\', false, $postid)) 返回值:2014-04-03 10:42 get\\U posts返回此post时,返回的参数如下:$args = array( \'post_type\' => \'post\', \'cat\' => 41, \'fi