我在现有插件中创建了一个新的插件设置,当用户更新到新版本时,需要默认选中该设置,因为许多原始功能现在都被该复选框激活。
这是“我的设置”页面中的设置:
<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”输出到页面。如果不重写整个选项以另一种方式工作,我就想不出如何做到这一点。
最合适的回答,由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 Hooks 和
Plugin activation hook discussion