【发布时间】:2012-09-10 12:21:01
【问题描述】:
在 Wordpress 中,我的目标是能够为我放在侧边栏中的每个小部件提供自定义类。 最好我想在每个小部件的小部件设置中添加这个类。还有第 3 方小部件。
我正在考虑更改类名,因为类名已经传递给 register_sidebar 函数 (%2$s):
<?php
register_sidebar(array('before_widget' => '<aside id="%1$s" class="widget %2$s blue">'));
?>
当然,我不应该更改 WP 核心代码或 3rd 方插件。这意味着我需要编写一个将挂钩到小部件配置过程的插件。
我已经发现可以修改所有小部件表单,方法是挂钩到操作“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>;
?>
所以基本上我有两个问题:
- 我是否使用正确的方法来解决这个问题(单个小部件的样式)
- 如果是这样,我如何修改小部件实例以保存和检索其他设置,而无需修改 Wordpress 或第 3 方插件源代码。
【问题讨论】:
标签: wordpress