如何将wordpress postmeta表中的值放入foreach循环中

时间:2012-11-19 09:32:57

标签: wordpress

我正在尝试将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

1 个答案:

答案 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'替换为您的自定义字段名称,即可为您提供该自定义字段的所有值。

我现在无法测试代码,所以请随时告诉我它是否无效。