我有来自帖子的元数据下拉列表:
<form name="search" action="" method="get" class="form-dropdown">
<select name="city">
<option>Stadt wählen</option>
<?php
$metakey = 'city';
$counties = $wpdb->query(
$wpdb->prepare(
"
SELECT DISTINCT meta_value
FROM $wpdb->postmeta AS pm
JOIN $wpdb->post AS p ON pm.post_id = p.ID
WHERE meta_key = %s
AND post_status = 'published'
ORDER BY meta_value ASC
",
$metakey
)
);
if ($counties) {
foreach ($counties as $city) {
echo "<option value=\"" . $city . "\">" . $city . "</option>";
}
}
?>
</select>
<input type="submit" value="Anzeigen" />
</form>
但是
AND post_status = published
这里好像错了。任何想法如何只显示已发布帖子的元数据?我通过插件&#34; FeedWordPress&#34;获得每个RSS提要的帖子。他把旧帖发布到帖子状态&#34;退休&#34;所以他们被展示了。不,我发现插件中没有任何选项可以将它们放入垃圾箱......
答案 0 :(得分:0)
您只是在查询中缺少单引号,因为published
是字符串值而不是另一列。啊,正如@Khushboo刚刚提到的,post_status
确实是posts表的一列。所以它必须看起来像这样:
$wpdb->query(
$wpdb->prepare(
"
SELECT DISTINCT meta_value
FROM $wpdb->postmeta AS pm
JOIN $wpdb->post AS p ON pm.post_id = p.ID
WHERE meta_key = %s
AND post_status = 'publish'
ORDER BY meta_value ASC
",
$metakey
)
);
但为什么不使用query_posts和查询参数等其他查询函数?