如何创建与WPML兼容的Wordpress自定义窗口小部件

问题描述

我已经在WP function.PHP中创建了一个自定义窗口小部件,就像这样简单:

class TestWidget extends WP_Widget {

    public function __construct() {
        $widget_ops = array(
            'classname' => 'test_widget','description' => esc_html__('Test Widget','theme_widget'),);
        parent::__construct( 'test_widget',__('Test',$widget_ops );
    }

    public function widget( $args,$instance ) {
        // outputs the content of the widget
    }

    public function form( $instance ) {
        // outputs the options form on admin
    }

    public function update( $new_instance,$old_instance ) {
        // processes widget options to be saved
    }

}

function custom_widgets_init() {
    register_widget( 'TestWidget' );
}
add_action('widgets_init','custom_widgets_init');

我使用WPML翻译我的内容。 WPML与认Widget完美配合,为每个Widget提供语言选择器:

WPML language selector

但是,当我添加自定义窗口小部件时,由于admin-ajax.PHP出现500错误而无法保存。进度圈一直在旋转,如果我保存小部件,则返回“小部件”部分时不会保存它:

Infinite progress circle

Console log error 500

如果我禁用WPML,并先保存我的Widget,它就可以工作! 而且,如果我再次启用WPML,现在我可以编辑我的小部件...

所以问题在于,是否要在激活WPML时第一次添加自定义窗口小部件。

您对此有何想法? 我们是否需要在Widget类中添加一些东西以启用WPML兼容性?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)