mysql custom wp query

时间:2012-07-24 作者:johnmido

此代码用于在wordpress查询中选择具有选定元值的帖子

<?php $values = $wpdb->get_results("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key  = \'wpcf-scr\'",ARRAY_A);?>
<select name="wpcf-scr">
<option value="">default</option>
<?php foreach ($values as $value):?>
<?php if($value[\'meta_value\']):?>
    <option value="<?php echo $value[\'meta_value\']?>"><?php echo $value[\'meta_value\']?></option>
<?php endif;?>
<?php endforeach;?>
</select>
我需要重新使用代码,但选择带有标签(手动分配)而不是元值的帖子。。。

下面是这样的解释(这是错误的)

<?php $values = $wpdb->get_results("SELECT DISTINCT post_tags FROM $wpdb->tags ",ARRAY_A);?>
<select name="tags">
<option value="">default</option>
<option value="tag1">tag1</option>
<option value="tag1">tag2</option>
<option value="tag1">tag3</option>
<option value="tag1">tag4</option>
</select>
如何正确地制作第二个示例?

谢谢

2 个回复
SO网友:Tomas Buteler

这是行不通的,因为没有tags 默认WP数据库中的表(也不是post\\U tags列)。要使该查询起作用,您必须查看并加入term_relationships, term_taxonomyterms 表格。复杂的东西。

如果您不熟悉MySQL查询或WP的数据库结构,只需使用get_tags 功能。您甚至不必提供任何参数:它将以对象数组的形式返回所有现有的post标记。下面是一个基于问题代码的示例:

<?php
$values = get_tags();
if(sizeof($values) > 0) : ?>
    <select name="tags">
        <option value="">default</option>
    <?php
        // I\'ve used value=id instead of name / slug, which is always better, but just change the index if desired
        foreach ($values as $value) : ?>
        <option value="<?php echo($value->term_id); ?>"><?php echo($value->name); ?></option>
    <?php endforeach; ?>
    </select>
<?php endif; ?>
祝你好运!

SO网友:RRikesh

您可以使用wp_dropdown_categories() 函数和过程post_tagtaxonomy 参数

<?php wp_dropdown_categories( array( \'taxonomy\' => \'post_tag\' ) ); ?>

结束