如果选中复选框,则在BEFORE_WIDGET上插入类

时间:2020-09-09 作者:wally9

我在所有小部件上都有一个复选框,这是一个简单的选项,可以将前面的小部件的大小增加一倍。

function doublesize_option( $widget, $return, $instance ) {
    $large = isset( $instance[\'large\'] ) ? $instance[\'large\'] : \'\';
    ?>
        <p>
            <input class="checkbox" type="checkbox" id="<?php echo $widget->get_field_id(\'large\'); ?>" name="<?php echo $widget->get_field_name(\'large\'); ?>" <?php checked( true , $large ); ?> />
            <label for="<?php echo $widget->get_field_id(\'large\'); ?>">
                <?php _e( \'Double size\', \'double_textdomain\' ); ?>
            </label>
        </p>
    <?php} add_filter(\'in_widget_form\', \'doublesize_option\', 10, 3 ); function doublesize_save( $instance, $new_instance ) {
if (!empty( $new_instance[\'large\'] ) ) {
    $new_instance[\'large\'] = 1;
}
return $new_instance; } add_filter( \'widget_update_callback\', \'doublesize_save\', 10, 2 );
我似乎无法在小部件前端显示上插入一个类,比如

1 个回复
SO网友:wally9

我最终使用以下方法来实现这一目标:

add_filter(\'dynamic_sidebar_params\', function($params) {
global $wp_registered_widgets;
$this_widget_id = $params[0][\'widget_id\'];
$this_widget = $wp_registered_widgets[$this_widget_id];
$widget_object = $this_widget[\'callback\'][0];
$all_settings = get_option($widget_object->option_name);
$saved_settings = $all_settings[$params[1][\'number\']];
if ($saved_settings[\'myclass\']) {
    $classe_to_add = \'myclass \';
    $classe_to_add = \'class=" \'.$classe_to_add;
    $params[0][\'before_widget\'] = str_replace(\'class="\',$classe_to_add,$params[0][\'before_widget\']);
}
return $params;
});

相关推荐

如何使用PHP函数触发WP CLI DB导出?

我想使用WP-CLI导出数据库-使用wp db export - 创建备份。我还需要使用cron来控制备份计划。WP-CLI安装在我的托管主机上,我可以通过SSH, 但我不能用cron 直接在我的服务器上。为了使用我自己的cron作业来安排备份,我需要使用插件WP Crontrol来添加和编辑cron 工作;该插件使用函数作为add_action, i、 e。my_backup_cron 开火my_backup_function:这是插件使用的格式:add_action( \'my_backup_cron