我正在尝试将postmeta键中的所有值放入foreach循环中,
我尝试过get_post_ meta和get_post_custom,但这些似乎只能根据帖子ID进行。
还尝试了get_post_custom_values但这又似乎只返回当前帖子..?
我只想要来自某个meta_key的所有值。我正在尝试使用值填充表单下拉列表...?
任何想法......
这就是我现在所拥有的;
$results = $wpdb->get_results( "SELECT $wpdb->postmeta.meta_value WHERE $wpdb- >
postmeta.meta_key = 'geo_short_address'" );
$options = array();
foreach ($results as $result) {
$options[$result->meta_value] = ucwords( $meta_value );
}
?>
</select>
<select name="country" id="country">
<option value="selected">Select a location</option>
<?php
foreach ($options as $key => $value) {
?>
<?php $retaincount = $value ?>
<option <?php if ($_GET['country'] == $retaincount ) { ?
>selected="<?php echo $value; ?>" <?php }; ?>value="<?php echo $value ?>">
<? php echo $value?></option>
<?php
}
?>
</select>
<p>
<input type="submit" value="<?php _e('Filter', 'appthemes'); ?>"
class="submit" />
<input type="hidden" name="action" value="Filter" />
</p>
<div class="clear"></div>
</form>
<?php endif;
}
Thanks
答案 0 :(得分:2)
我非常确定你需要一个自定义MySQL查询。
这是应该有用的东西:
global $wpdb;
$results = $wpdb->get_results( "SELECT $wpdb->postmeta.meta_value FROM $wpdb->postmeta WHERE 1=1 AND $wpdb->postmeta.meta_key = 'geo_short_address'" );
$options = array();
foreach ($results as $result) {
$options[$result->meta_value] = ucwords( $result->meta_value );
}
echo '<select class="field" name="country">';
foreach ($options as $key => $value) {
echo "<option value='$key'" . ( $_GET['country'] == $value ? " selected='selected'" : "" ) . ">$value</option>";
}
'</select>';
只需将'custom_key'
替换为您的自定义字段名称,即可为您提供该自定义字段的所有值。
我现在无法测试代码,所以请随时告诉我它是否无效。