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 に答える