我通过构建一个插件来学习PHP,该插件可以根据用户的位置显示或隐藏菜单项。我现在有点困了。
在下面的函数中,文本输入被保存到数据库中,但我在将单选按钮数据保存到数据库中时遇到问题。
我希望默认选中第一个选项。
function option( $fields, $item_id ) {
ob_start(); ?>
<p class="field-visibility description description-wide">
<label for="edit-menu-item-visibility-<?php echo $item_id; ?>">
<?php _e(\'Enter country code(s) separated with commas\') ?>:
<input type="text"
class="widefat code"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-visibility[<?php echo $item_id; ?>]"
value="<?php echo esc_html( get_post_meta( $item_id, \'locations\', true ) ); ?>" /></br>
<input type="radio"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-show-hide[<?php echo $item_id; ?>]"
value="<?php echo get_post_meta( $item_id, \'hide\', true ); ?>"
/>Hide from these locations.</br>
<input type="radio"
id="edit-menu-item-visibility-<?php echo $item_id; ?>"
name="menu-item-show-hide[<?php echo $item_id; ?>]"
value="<?php echo get_post_meta( $item_id, \'show\', true ); ?>"
/>Only show to these locations.</br>
</label>
</p>
<?php
$fields[] = ob_get_clean();
return $fields;
}
以下是电流输出:
理想情况下,我会使用单选按钮设置一个名为$visible true或false的变量。但我不知道如何做到这一点。
提前感谢!
最合适的回答,由SO网友:Charles Jaimet 整理而成
使用选中功能。https://codex.wordpress.org/Function_Reference/checked
要呈现的HTML应如下所示:
<input ... value="hide" checked="checked" />Hide from these locations.</br>
<input ... value="show" />Only show to these locations.</br>
你得到的可能是这样的东西:
<input ... value="hide" />Hide from these locations.</br>
<input ... value="" />Only show to these locations.</br>
这将有助于:
<input type="radio" id="edit-menu-item-visibility-<?php echo $item_id;>" name="menu-item-show-hide[<?php echo $item_id; ?>]" value="hide" <?php checked( get_post_meta( $item_id, \'hide_show\', true ), \'hide\', true ); ?>" />Hide from these locations.</br>
<input type="radio"id="edit-menu-item-visibility-<?php echo $item_id; ?>" name="menu-item-show-hide[<?php echo $item_id; ?>]" value="show" <?php checked( get_post_meta( $item_id, \'hide_show\', true ), \'show\', true ); ?>" />
仅显示到这些位置。