回显类别中所有帖子的get_post_meta以填充选择字段

时间:2011-07-19 作者:Macxim

我想检索特定类别中包含的所有帖子的特定post\\u meta。我想在每个类别的顶部构建一个搜索表单,其中包含一个选择字段,该字段将由用户当前所在类别中包含的所有帖子所需的post\\u meta填充。这可行吗?也许可以使用如下循环:

For each post_meta called "City" in all posts contained in category \'X\', you must put it in <option value="City\'s name">City\'s name</option>

到目前为止,以下是我所能做的。

<select>
<option value="" selected="selected">Please pick a city below...</option>
<option value="<?php echo get_post_meta($post->ID, \'City\', true) ?>">
<?php echo get_post_meta($post->ID, \'City\', true) ?>
</option>
</select>
我知道,不多。需要帮忙吗?提前谢谢你。

3 个回复
最合适的回答,由SO网友:Macxim 整理而成

非常感谢您的回答!

我终于在这里找到了我想要的:http://sixrevisions.com/wordpress/custom-fields-search/代码如下:

<form name="search" action="" method="get">
<select name="City">
 <?php
  $metakey = \'city\';
  $cities = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
  if ($cities) {
    foreach ($cities as $city) {
  echo "<option value=\\"" . $city . "\\">" . $city . "</option>";
    }
    }
 ?>
</select>
<input type="submit" value="search" />
</form>
这是一篇精彩的文章,对我帮助很大!我希望它也能帮助别人。

SO网友:Wyck

听起来你做错了。通常情况下,您不会在分层查询中首先查询post meta,因为它会慢得多。我真的不知道你是如何通过你的问题来构建这一点的。

逻辑应该是-->查询类别-->查询具有元值的帖子(或标记或子类别,不要忘记这些工作)。

为此,您需要使用WP Query http://codex.wordpress.org/Class_Reference/WP_Query

例如$query = new WP_Query( \'cat=4&meta_key=city\' );

如果您使用了大量的元字段值,则应设置get_post_meta 为false或保留该参数以返回数组(您的示例将其设置为true)。

SO网友:Jared

尝试一下:

<?php
$args = array( \'category\' => 3, \'meta_key\' => \'City\' );
$lastposts = get_posts( $args );
echo \'<select>\';
echo \'<option value="" selected="selected">Please pick a city below...</option>\';
foreach($lastposts as $post) : setup_postdata($post);
    $themeta = get_post_meta($post->ID,\'City\',true); ?>
    <option value="<?php echo $themeta; ?>"><?php echo $themeta; ?></option>
<?php endforeach;
echo \'</select>\';
?>
我没有测试它,但它应该可以工作。它是从某个类别中获取所有帖子以及某个元键。

结束

相关推荐

WP_DROPDOWN_Categories by Date?

有没有办法为wp\\U dropdown\\u categories或wp\\u list\\u categories或其他东西指定一个时间段。。。?我想创建一个归档页面,这样,如果您在2010年的归档中,您将只看到2010年使用的类别。我必须为此编写自定义函数吗?如果是,有什么建议从哪里开始?tnx提供任何类型的答案!顺致敬意,克里斯