我在wordpress网站上完成了以下工作。
<?php
global $wpdb;
$results = $wpdb->get_results( "SELECT post_title FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );
$options = array();
foreach ($results as $result) {
$options[$result->post_title] = $result->post_title;
}
echo '<select class="field" name="djshow">';
foreach ($options as $key => $value) {
echo "<option value='$key'" . ( $_GET['show'] == $value ? " selected='selected'" : "" ) . ">$value</option>";
}
'</select>';
?>
从 wp_posts 中搜索数据库中 post_title 的每个实例,其中 post_type 显示且< em> post_status 是公开。然后对它进行排序并将其输出到数组,然后使用匹配的每个 post_title 的列表填充Select标记。
目前它将 post_title 输出到选项值和名称字段....
我想要做的是在原始查询中选择另一个字段 ID ,以填充选项值,同时 post_title 填充名称。
因此,当在html中呈现时,select会读取类似的内容:
<option value="15">Post Title 1</option>
<option value="18">Post Title 2</option>
<option value="23">Post Title 3</option>
etc...
我认为我需要使用的正确查询是这样的(如果我错了,请纠正我)
$results = $wpdb->get_results( "SELECT post_title,ID FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );
但那是我有限的知识让我失望的地方......
如何将 ID 的输出分配给选项值,将 post_title 分配给select标签的名称?
答案 0 :(得分:0)
当您查询多个值时,可以使用逗号分隔它们。 在你的代码中
post_title AND ID
应该是
post_title, ID
您的返回值是$结果,您的foreach可能是
foreach ($results as $result) {
echo "<option value='$result->ID'" . ( $_GET['show'] == $result->ID ? " selected='selected'" : "" ) . ">$result->post_title</option>";
}
不确定您的$ _GET是否包含post_title或ID
答案 1 :(得分:0)
更改SQL以同时包含post_title
和ID
之后,您只需要修复此部分:
foreach ($results as $result) {
$options[$result->post_title] = $result->post_title;
}
现在应该是:
foreach ($results as $result) {
$options[$result->ID] = $result->post_title;
}
因为在下一个foreach
中,$key
中的内容来自您在括号中的内容,而$value
来自作业的右侧。