我有一個自定義帖子類型「訂戶」。訂戶有一個名爲'email'的元字段。電子郵件填充訂閱者電子郵件。我只需要知道電子郵件字段的值就可以獲得訂閱者ID。所以我嘗試使用這個wp_query:WP_Query不適用於元數據字段
$args = array (
'post_type' => 'subscribers',
'meta_query' => array(
array(
'key' => 'email',
'value' => $subscriber_email,
'compare' => '=',
'type' => 'CHAR',
),
),
);
$subscribers = new WP_Query($args);
if ($subscribers->have_posts()) {
while ($subscribers->have_posts()) {
echo 'Found post!';
}
}
else {
echo 'no posts found';
}
但只給了我'一直沒有發現任何帖子'。另外,我對meta_key和meta_value有點困惑。在Codex示例中,他們在wp_query中使用meta_key和meta_value。但是當我看到我的MySQL數據庫postmeta表時,我發現meta_key字段的值爲'_subscriber',而meta_value字段的值爲a:1:{s:5:"email";s:16:"[email protected]";}
我做錯了什麼?
UPDATE:彌敦道的意見後,我重寫代碼,並做了工作:
$args = array (
'post_type' => 'subscribers',
'meta_query' => array(
array(
'key' => '_subscriber',
'value' => $subscriber_email,
'compare' => 'LIKE'
)
)
);
雖然我決定修改我的代碼,使所有自定義元字段爲字符串,而不是序列化數組。因爲我想在未來使用wp_query的功能。
我不認爲'key'=>'email', 'value'=> $ subscriber_email,正在做你認爲它正在做的事情...請記住,args正在過濾循環,而不是真的是任何可以通過這種邏輯進行過濾的帖子本身。讓我問你這個問題:如果你完全刪除了元查詢。查詢現在可以工作嗎?如果是這樣,那它沒有做什麼?你想用訂閱者作爲郵件類型來完成什麼?爲什麼不使用WP用戶查詢? – evanv
內森已經給了我正確方向的線索。 – Ksenia