我想为现有字段类型创建一个自定义字段color
,这是 Siteorigin 小部件包中的默认字段。基本上,我需要为color
字段类型创建自己的 UI 和后端逻辑。
由于该字段在很多地方使用,如果我可以直接覆盖字段类型,将自动在每个地方工作。
我搜索了很多次,并且还挖掘了小部件捆绑包和 SO 本身的源代码,但找不到我需要的东西,即使我尝试以0
优先级(最高)加载我的字段文件夹但没有工作。它仍然显示默认颜色字段类型。
任何人都可以向我指出一些操作或过滤器,以便我可以取消注册并使用相同类型重新注册color
?或者是否有其他可能的解决方法?
更新
我的问题重点是Siteorigin Widgets Bundle Plugin。
我不想只覆盖任何样式变量,而是想覆盖现有字段。经过一番研究,我发现了 2 个可用于覆盖现有字段的过滤器:
// Give other plugins a way to modify this form.
$form_options = apply_filters( 'siteorigin_widgets_form_options', $form_options, $this );
$form_options = apply_filters( 'siteorigin_widgets_form_options_' . $this->id_base, $form_options, $this );
这两个过滤器form_options()
在类的方法中被调用,SiteOrigin_Widget
但是这个方法是这样调用的:
public function form( $instance, $form_type = 'widget' ) {
if( $form_type == 'widget' ) {
if( empty( $this->form_options ) ) {
$this->form_options = $this->form_options();
}
$form_options = $this->form_options;
}
...
...
}
但它看起来$this->form_options
永远不会为空,因此$this->form_options()
永远不会调用方法,而方法又不会应用过滤器siteorigin_widgets_form_options
和siteorigin_widgets_form_options_<id_base>
因此,我修改表单字段的机会就变成zero
了这种方法。
我基本上需要的是例如。有一个现有字段color
,我有另一个自定义字段adv-color
。现在,挑战是覆盖所有color
字段adv-color
实例,因此该字段的每个实例都被覆盖。但是,这仍然是一个希望。
请让我知道我的方法是否错误或是否有其他方法可以解决此问题。非常期待示例。