Php Wordpress-仅从“获取元数据”;出版;文章
我有一个帖子中的元数据下拉列表:Php Wordpress-仅从“获取元数据”;出版;文章,php,wordpress,loops,metadata,Php,Wordpress,Loops,Metadata,我有一个帖子中的元数据下拉列表: <form name="search" action="" method="get" class="form-dropdown"> <select name="city"> <option>Stadt wählen</option> <?php $metakey = 'city'; $counties = $wpd
<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>
这似乎是错的。你知道如何只显示已发布帖子中的元数据吗?我通过插件“FeedWordPress”获得每个RSS提要的帖子,他将旧帖子设置为帖子状态“retired”,这样它们就会显示出来。不,我在插件中找不到将它们放入垃圾箱的选项…您的查询中缺少单引号,因为
发布的
是一个字符串值,而不是另一列。啊,正如@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和query params?post_status不是postETA表中的字段。您必须使用posts表创建join查询我认为您是对的,但我不知道如何实现这一点。之前?不,那不行,我想Khushboo是对的,我必须先从帖子中获取标签,然后在获取元数据之前按“帖子状态”进行过滤。对。刚刚看到了,已经在更新我的帖子了。现在应该可以了。用你的代码更新了我的帖子现在我没有收到任何错误,但是下拉列表是空的…实际上状态是
publish
notpublished
(请参见我的更改)。你是否尝试过运行PhpMyAdmin或类似的查询?对我来说,这很有效。你确定你的元键是“城市”并且你有活动的行来发布文章吗?
$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
)
);