如何通过子主题functions.php重写WordPress主题的get_tab_options函数
重写Elementor收藏标签页小部件的选项方法
因为Elementor小部件的机制,直接修改父类方法会被主题更新覆盖,利用子主题的functions.php可以安全重写目标方法,具体操作如下:
- 创建自定义子类
在子主题的functions.php文件中,编写继承原主题小部件类的新类,并重写get_tab_options方法:
// 重写收藏标签页小部件的选项方法 class Custom_Freeio_Favorite_Tabs extends Freeio_Elementor_Freeio_Favorite_Tabs { public function get_tab_options() { $options = [ 'service' => esc_html__('Service', 'freeio'), 'employer' => esc_html__('Employer', 'freeio'), 'freelancer' => esc_html__('Freelancer', 'freeio'), ]; return $options; } }
- 替换原Elementor小部件
添加钩子函数,在Elementor完成所有小部件注册后,注销原小部件并注册自定义子类:
function custom_replace_favorite_tabs_widget() { // 确保原类已加载 if (class_exists('Freeio_Elementor_Freeio_Favorite_Tabs')) { // 注销原小部件(注意:此处ID需与原小部件get_name()方法返回值一致,通常为类名的小写横线形式) Elementor\Plugin::instance()->widgets_manager->unregister_widget_type('freeio-favorite-tabs'); // 注册自定义小部件 Elementor\Plugin::instance()->widgets_manager->register_widget_type(new Custom_Freeio_Favorite_Tabs()); } } add_action('elementor/widgets/widgets_registered', 'custom_replace_favorite_tabs_widget');
注意事项
- 确认原小部件注册ID:如果不确定
freeio-favorite-tabs是否正确,可以查看原主题注册该小部件的代码,或在Elementor编辑器中查看小部件标识。 - 代码需添加到子主题
functions.php的末尾,避免破坏原有代码结构。 - 操作前建议备份子主题文件,防止语法错误导致网站异常。
内容的提问来源于stack exchange,提问作者fraggley
相关产品推荐
相关产品推荐

