为啥查询不返回存档帖子?
Posted
技术标签:
【中文标题】为啥查询不返回存档帖子?【英文标题】:Why doesn't the query return archived posts?为什么查询不返回存档帖子? 【发布时间】:2018-08-30 07:51:59 【问题描述】:我正在使用“存档帖子状态”插件来存档帖子。这是这个插件的链接:Archive post status
我正在尝试使用 wordpress 查询在两个日期之间获取存档帖子:开始日期和结束日期。开始日期和结束日期来自 url,我将它们与 $_GET 一起使用。这是我的代码:
$startDate = $_GET['startdate'];
$endDate = $_GET['enddate'];
$firstDayOfMonth = date(“Ym01”, strtotime($_GET[‘startdate’]));
$lastDayOfMonth = date(“Ymt”, strtotime($_GET[‘enddate’]));
$arguments = [
'posts_per_page' => 10,
'post_status' => 'archive',
'post_type' => 'agenda',
'meta_query' => [
'relation' => 'AND',
[
'key' => 'date',
'compare' => '>=',
'value' => $firstDayOfMonth,
],
[
'key' => 'date',
'compare' => '<=',
'value' => $lastDayOfMonth,
]
]
];
如果我删除带有开始日期和结束日期的元查询,查询会返回我存档的帖子,但元查询不会返回任何内容。
【问题讨论】:
看起来您使用文字处理器编辑了这段代码!这些引号“
无效,请改用"
还有$_GET['startdate'];
和$_GET['endate'];
是以什么格式传递给你的?
我们需要您通过$_GET
请求收到的日期格式来调试此代码。
$_GET 收到的日期格式是“Ymd”,例如“20180509”
你的单引号‘
也应该是'
【参考方案1】:
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'state',
'value' => 'Wisconsin',
),
array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
) );
这样做我希望这个工作。 用数组()
参考:- Link
'relation' => 'AND',
array(
'key' => '_my_custom_key_2',
'value' => 'Value I am looking for 2',
'compare' => '='
),
array(
'key' => '_my_custom_key_3',
'value' => 'Value I am looking for 3',
'compare' => '='
)
【讨论】:
【参考方案2】:首先,您比较字符串值(meta_query 理解date
类似字符串的键),而不是数字,因此您需要比较类似数字的元值(例如,为了在格式日期秒数中从 1970 年起更准确(使用 strtotime()
)如果可能)。
要说 WordPress 元值必须像数字一样进行比较,只需添加参数 'type' => 'NUMERIC'
或 'type' => 'DECIMAL(10,3)'
(用于浮点数)。
您的参数数组示例:
$args = [
'posts_per_page' => 10,
'post_status' => 'archive',
'post_type' => 'agenda',
'meta_query' => [
[
'key' => 'date',
'type' => 'DECIMAL(10,3)',
'compare' => 'BETWEEN',
'value' => array($firstDayOfMonth,$lastDayOfMonth)
]
]
];
另外,在输入数组值value
的开始和结束日期之前,请务必推荐使用intval()
作为日期变量。
【讨论】:
以上是关于为啥查询不返回存档帖子?的主要内容,如果未能解决你的问题,请参考以下文章