我在这里看到您的代码有几个问题:
你有category_name
设置为upcoming class
... 类别段塞中没有空格,因此这是错误的。如果你想拥有一切upcoming
和class
类别,然后使用upcoming,class
https://developer.wordpress.org/reference/classes/wp_query/#category-parameters
您有一个元查询company
但听起来您也在尝试按自定义字段排序upcoming_class_date
, 因此,此字段也需要包含在查询中。您需要将其更改为高级元查询来处理此问题。https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters
您说过自定义帖子类型,但您的代码post
作为岗位类型
这是我想到的一些关于如何设置查询参数的快速示例代码:
$args = array(
\'post_type\' => array( \'post\' ),
\'order\' => \'DESC\',
\'orderby\' => array( \'upcoming_class_date\' => \'DESC\', \'date\' => \'DESC\' ),
\'category_name\' => \'upcoming class\',
\'showposts\' => 40,
\'meta_query\' => array(
\'relation\' => \'AND\',
array(
\'key\' => \'company\',
\'value\' => $company,
\'compare\' => \'=\',
),
array(
\'relation\' => \'OR\',
array(
\'key\' => \'upcoming_class_date\',
\'compare\' => \'EXISTS\',
),
array(
\'key\' => \'upcoming_class_date\',
\'compare\' => \'NOT EXISTS\',
)
)
),
);
您会注意到
EXISTS
和
NOT EXISTS
.. 这是因为您说过,有时一篇文章没有该字段的值——为了确保该值包含在查询中,我们必须同时添加这两个字段,并设置
relation
到
OR
(这样一来,它会返回带有该字段的帖子和不带该字段的帖子)。
我看到的另一个潜在问题是保存日期的格式——这可能会导致排序问题,但您没有提供格式的详细信息。
我建议阅读关于类似问题的回答,以更好地了解WP\\U Query如何处理元查询:https://wordpress.stackexchange.com/a/285012/51201
您还可以执行orderby
使用元查询数组键(但必须将其更改为关联数组)——上面的链接中有相关的示例。