此代码用于在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>
如何正确地制作第二个示例?
谢谢
SO网友:Tomas Buteler
这是行不通的,因为没有tags
默认WP数据库中的表(也不是post\\U tags列)。要使该查询起作用,您必须查看并加入term_relationships
, term_taxonomy
和terms
表格。复杂的东西。
如果您不熟悉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; ?>
祝你好运!