0

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

1 回答 1

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'为您的自定义字段名称,这应该会为您提供该自定义字段的所有值。

我现在无法测试代码,所以如果它不起作用,请随时告诉我。

于 2012-11-19T09:51:46.117 回答