問題描述
這是我用來獲取日期元數據比今天更新的事件帖子的代碼片段:
<?php
query_posts( array(
'post_type' => 'concerts',
'meta_key' => 'numericdate',
'posts_per_page' => -1,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'numericdate',
'value' => date('dmY'),
'compare' => '>=',
'type' => 'date'
)
)
) );
if (have_posts()) : ?>
這沒有返回結果。 “numericdate” 字段包含一個”ddmmyyyy” 字符串,所以我預計與”dmY” 今天日期值的比較將會起作用。我錯了。或者上面的代碼有一些錯誤。謝謝你的幫助 !
最佳解決方案
我有完全相同的問題,除了我使用 std 。帖子類型 (帖子) 和我的查詢中的一個類別。除了排序順序,一切都起作用。
$d = date("Y-m-d");
$args = array(
'post_type' => 'post',
'category_name' => 'events',
'post_status' => 'publish,draft,pending,future,private', // just for me
'meta_key' => 'event_start',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_start',
'value' => $d,
'type' => 'date',
'compare' => '>'
)
)
);
但是我的帖子由 String-Comparison 排序。我做錯了什麼?
經過一點點的試驗和錯誤,我發現,而不是’meta_value_num’ 我應該使用’meta_value’:
$d = date("Y-m-d");
$args = array(
'post_type' => 'post',
'category_name' => 'events',
'post_status' => 'publish,draft,pending,future,private',
'meta_key' => 'event_start',
'orderby' => 'meta_value',
'order' => 'ASC',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_start',
'value' => $d,
'type' => 'date',
'compare' => '>'
)
)
);
次佳解決方案
對於什麼是它的價值,使用 wordpress current_time()這種查詢。
current_time('mysql')根據 MySQL 可接受的管理員設置提供服務器時間
第三種解決方案
我相信 MySQL 日期格式應該是 YYYY-MM-DD 。另外我認為 orderby 應該是 meta_value_num,否則這些值被視為字符串。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。