我正在使用以下代码来填充 WordPress 下拉菜单,其中包含来自自定义字段的所有唯一值:
<form name="search" action="" method="get">
<select name="stateprov">
<option>Select...</option>
<?php
$metakey = 'state_prov';
statesProvs = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
if ($statesProvs) {
foreach ($statesProvs as $stateprov) {
echo "<option value=\"" . $stateprov . "\">" . $stateprov . "</option>";
}
}
?>
</select>
<input type="submit" value="search" />
</form>
但是,它不从数据库中获取任何内容,因此弹出列表为空。
尝试不同的查询,例如
$statesProvs = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_author = 2" );
按预期工作。我得到一个弹出窗口,里面有一堆 Post ID。但是应该对我的自定义元数据起作用的查询只会显示一个空菜单(并且 print_r 显示一个空数组)。
数据肯定在数据库中......我做错了什么?
我正在使用自定义元框 PHP 类将所有自定义创建的字段键和值写入 _custom_meta 元键的值中,这可能也很重要。如果我说得对的话。因此:
a:61:{s:10:"state_prov";s:2:"CA";s:13:"vertical_drop";s:13:"3100ft / 945m";s:14:"base_elevation";s:14:"7953ft / 2424m";s:16:"summit_elevation";s:15:"11053ft / 3369m";s:12:"skiable_area";s:10:"3500 acres";s:16:"average_snowfall";s:14:"400in / 1016cm";s:13:
等等。这种存储自定义元数据的方式是否会阻止 wpdb 正确访问它?
谢谢!