WordPress的:添加配置选项可以将所有窗口小部件设置(Wordpress: Add confi

2019-07-31 11:57发布

在WordPress的,我的目标是能够给一个自定义类,我把在侧边栏每个小部件。 最好我想在每个插件的窗口小部件设置添加这个类。 ALSO第三方小工具。

我想改变类名的,因为类名已经被传递到register_sidebar功能(%2 $ S):

<?php
register_sidebar(array('before_widget' => '<aside id="%1$s" class="widget %2$s blue">'));
?>

Ofcourse我不应该改变WP的核心代码或第三方插件。 这意味着,我需要编写一个插件,将钩到小工具的配置过程。

我已经发现,它可能修改所有部件的形式,挂接到行动“in_widget_form”:

<?php
add_action('in_widget_form', 'teaserWidgetAddToForm');

function teaserWidgetAddToForm($widget_instance) {
  ?>
  <label for="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>">Custom classname(s):</label>
  <input type="text" id="<?php echo $widget_instance->get_field_id('teaser-classname'); ?>" name="<?php echo $widget_instance->get_field_name('teaser-classname'); ?>">
  <?php
}
?>

这个数据应该由Widget的超类被保存,但是你如何检索这些数据(所以打开窗口小部件设置在后显示您在前面填什么)

而且,这个保存的数据应该放在小部件实例 - 如何在这做什么? 我想用这样的:

<?php
$wp_registered_widgets[<widget_id>]['callback'][0]['widget_options']['classname'] = <chosen_class>;
?>

所以基本上我有2个问题:

  • 我在用正确的方法解决这个问题(个别部件的造型)
  • 如果是这样,我怎么能修改控件实例来保存和检索额外的设置,而无需修改Wordpress或第三方插件的源代码。

Answer 1:

  1. 默认情况下,每个插件实例都有一个唯一的ID,可用于设计它。

  2. 为了节省从添加的字段中的数据in_widget_form行动,您还需要有一个widget_update_callback过滤器。

     function my_widget_update_callback($instance, $new_instance) { $instance['my_classnames'] = $new_instance['my_classnames']; return $instance; } 

    要显示的形式保存的价值,你需要先检索实例设置。

     function my_in_widget_form($instance) { $settings = $instance->get_settings(); … 

    最后,我想添加自定义类最简单的方法是在widget_display_callback过滤器,它会显示一个小窗口之前运行。 你必须自己显示部件,因为你只能从该过滤器返回一个实例,实例不会控制部件的CSS类。

     function my_widget_display_callback($instance, $widget, $args) { if (!isset($instance['my_classnames'])) { return $instance; } $widget_classname = $widget->widget_options['classname']; $my_classnames = $instance['my_classnames']; $args['before_widget'] = str_replace($widget_classname, "{$widget_classname} {$my_classnames}", $args['before_widget']); $widget->widget($args, $instance); return false; } 

请参阅这篇文章对有关部件可用钩子更多信息: http://shibashake.com/wordpress-theme/wordpress-widget-system



文章来源: Wordpress: Add config option to all widget settings
标签: wordpress