如何将新插件设置复选框默认为选中

时间:2016-08-18 作者:Benbodhi

我在现有插件中创建了一个新的插件设置,当用户更新到新版本时,需要默认选中该设置,因为许多原始功能现在都被该复选框激活。

这是“我的设置”页面中的设置:

<td>
    <?php printf(
        \'<input id="bodhi_svgs_settings[advanced_mode]" name="bodhi_svgs_settings[advanced_mode]" type="checkbox" %2$s />\', \'bodhi_svgs_settings_advanced_mode\', checked( isset( $bodhi_svgs_options[\'advanced_mode\'] ), true, false ) ); ?>
    <?php _e( \'Yes\', \'svg-support\' ); ?><br /><small class="description"><?php _e(\' You don\\\'t need to enable this to simply use SVG files as images. Enabling this will trigger advanced options and SVG functionality such as inline rendering.\', \'svg-support\' ); ?></small>
</td>
我已经研究了许多解决方案,但似乎无法使其正常工作。我试过了checked( isset( $bodhi_svgs_options[\'advanced_mode\'] ), true ) 但这会将checked=“checked”输出到页面。如果不重写整个选项以另一种方式工作,我就想不出如何做到这一点。

1 个回复
最合适的回答,由SO网友:Aamer Shahzad 整理而成

如果选中该复选框并保存插件选项,它会将选项添加到数据库中的{prefix}\\u options表中。要选中复选框,您需要update_option(\'option_id\', \'value\' ) 对于插件激活复选框。要做到这一点,您需要注册插件激活挂钩。将以下代码放在主插件文件中。

register_activation_hook( __FILE__, \'am_plugin_activate\' );
function am_plugin_activate() {
    // plugin activation code here...
    update_option(\'checkbox_id\', true );
}
这将使复选框处于选中状态。要在插件更新时选中复选框,需要在upgrader_process_complete 行动挂钩。e、 g;

add_action( \'upgrader_process_complete\', \'am_plugin_upgrate\',10, 2);
function am_plugin_upgrate( $upgrader_object, $options ) {
    // plugin update code here....
}
参考请看upgrader_process_complete, Discussion Plugin Activation HooksPlugin activation hook discussion

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register