我用了这个答案question 显示我的分类法下拉列表,效果很好。
但是,当我保存帖子/更新并且页面刷新/加载时,我选择的分类将恢复到列表上的最后一个分类。我检查了数据库,它确实正确地保存了所选的分类法,所以很明显我是如何正确地回显数据的?如何修复此问题,使其保持在选定的分类法上?
$term = isset( $values[\'meta-box-events_select\'] ) ? esc_attr( $values[\'meta-box-events_select\'][0] ) : \'\';
这是我用来显示下拉列表的代码
<?php $tax = get_object_taxonomies(\'activities\');
$taxterms = get_terms( $tax, \'orderby=count&offset=1&hide_empty=0&fields=all\' );
?>
<select name=\'meta-box-events_select\' id=\'meta-box-events_select\'>
<option value=\'\' <?php if (!count( $names )) echo "selected";?>>Select Term</option>
<?php
foreach ( $taxterms as $term ) {
echo \'<option value="\' . $term->slug . \'" selected>\' . $term->name . \'</option>\',"\\n";
} ?>
</select>
SO网友:Stephen Harris
似乎您正在将术语“selected”添加到每个选项中-您只想将其添加到当前选择的选项中。
您可以使用WordPress内置功能,selected
, 它允许您比较两个值(例如保存的术语ID和当前选项术语ID),以及它们何时匹配打印“选定”。
例如:
<?php
$current_term;//Retrieve the current saved term\'s;
//Get the current term\'s ID, or 0 if it doesn\'t exist
$current_term_id = ($current_term ? $current_term->term_id : 0);
?>
<select name=\'meta-box-events_select\' id=\'meta-box-events_select\'>
<option value=\'\' <?php selected(0,$current_term_id)?>>Select Term</option>
<?php
foreach ( $taxterms as $term ) {
echo \'<option value="\'.$term->slug.\'"\'. selected($term->term_id,$current_term->term_id).\'>\'. $term->name . \'</option>\';
} ?>
</select>