我正在使用“存档的帖子状态”插件来制作帖子存档。这是这个插件的链接: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,
]
]
];
如果我删除带有开始日期和结束日期的元查询,则查询会返回归档帖子,但使用元查询时,它不会返回任何内容。
$q = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'state',
'value' => 'Wisconsin',
),
array(
'key' => 'city',
'compare' => 'EXISTS',
),
),
) );
这样做我希望这项工作。 with array()
参考: - 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' => '='
)
首先,你比较字符串值(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()
作为日期变量。