WordPress编辑器无法与自定义小部件一起使用

3
我已经编写了一个脚本来添加 Wp-Editer,在其他地方它运行得很好,但在 WidgetPage Builder by SiteOrigin 中无法正常工作,请帮助我解决这个问题。看起来像这样:enter image description here 以下是我的脚本。
<?php
    // Register widget
    function register_getstarted_widget() {
    register_widget('mansukh_Aboutus');
    }

    add_action('widgets_init', 'register_getstarted_widget');

    /**
     * Adds About Us widget.
     */

    class mansukh_Aboutus extends WP_Widget {

    /**
     * Register widget with WordPress.
     */
    function __construct() {
        parent::__construct(
                'mansukh_aboutus', // Base ID
                __('Fulgent About Us', 'mansukh'), // Name
                array('description' => __('Displays a About Us section.', 'mansukh'),) // Args
        );
    }

    /**
     * Front-end display of widget.
     *
     * @see WP_Widget::widget()
     *
     * @param array $args     Widget arguments.
     * @param array $instance Saved values from database.
     */
    public function widget($args, $instance) {
        echo $args['before_widget'];

        /* if (!empty($instance['title'])) {
          echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
          } */

        /* Home About Us */
        $mansukh_home_title = !empty($instance['mansukh_home_title']) ? sanitize_text_field($instance['mansukh_home_title']) : '';
        $mansukh_home_aboutus = !empty($instance['mansukh_home_aboutus']) ? wpautop($instance['mansukh_home_aboutus']) : '';
        ?>
        <div class="section-row about-secton">
            <div class="container">
                <div class="row">


                    <div class="col-md-12 main-objective">
                        <div class="row">
                            <div class="<?php echo $mansukh_home_aboutus ? 'col-md-6' : 'col-md-12' ?> col-sm-12">
                                <?php echo $mansukh_home_aboutus; ?>
                            </div>

                        </div>    
                    </div>

                </div>
            </div>
        </div>
        <?php
        echo $args['after_widget'];
    }

    /**
     * Back-end widget form.
     *
     * @see WP_Widget::form()
     *
     * @param array $instance Previously saved values from database.
     */
    public function form($instance) {

        #$title = !empty($instance['title']) ? $instance['title'] : __('New title', 'mansukh');

        /* Home About Us */
        $mansukh_home_title = !empty($instance['mansukh_home_title']) ? sanitize_text_field($instance['mansukh_home_title']) : '';        
        $mansukh_home_aboutus = !empty($instance['mansukh_home_aboutus']) ? wpautop($instance['mansukh_home_aboutus']) : '';

        /*
          ?>
          <p>
          <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>">
          </p>
         */
        ?>
        <div class="page-widget themeoption-themes1">
            <div class="section theme-tabs">                
                <div class="theme-option-inner-tab-group">
                    <div class="ft-control">
                        <label class="explain" for="<?php echo $this->get_field_id('mansukh_home_title'); ?>"><?php _e('About Us Title', 'mansukh'); ?></label>
                        <input id="<?php echo $this->get_field_id('mansukh_home_title'); ?>" class="of-input" type="text" name="<?php echo $this->get_field_name('mansukh_home_title'); ?>" 
                               value="<?php echo $mansukh_home_title; ?>" placeholder="<?php _e('About Us Title', 'mansukh'); ?>" />
                    </div>                
                </div>
            </div>            
            <div class="section theme-tabs">                
                <div class="theme-option-inner-tab-group">
                    <div class="ft-control">
                        <label class="explain" for="<?php echo $this->get_field_id('mansukh_home_aboutus'); ?>"><?php _e('Aboutus Details', 'mansukh'); ?></label>
                        <?php
                        $mansukh_editor_id = $this->get_field_id('mansukh_home_aboutus');
                        $mansukh_editor_name = $this->get_field_name('mansukh_home_aboutus');
                        $mansukh_settings = array(
                            'textarea_name' => $mansukh_editor_name,
                            'textarea_rows' => 20,
                            'media_buttons' => false,
                            'teeny' => true,
                        );
                        wp_editor($mansukh_home_aboutus, $mansukh_editor_id, $mansukh_settings);


                        ?> 
                    </div>
                </div>
            </div>

        </div>

        <?php
    }

    /**
     * Sanitize widget form values as they are saved.
     *
     * @see WP_Widget::update()
     *
     * @param array $new_instance Values just sent to be saved.
     * @param array $old_instance Previously saved values from database.
     *
     * @return array Updated safe values to be saved.
     */
    public function update($new_instance, $old_instance) {
        $instance = array();

        #$instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';

        /* Home Banner */
        $instance['mansukh_home_title'] = (!empty($new_instance['mansukh_home_title']) ) ? sanitize_text_field($new_instance['mansukh_home_title']) : '';
        $instance['mansukh_home_aboutus'] = (!empty($new_instance['mansukh_home_aboutus']) ) ? wpautop($new_instance['mansukh_home_aboutus']) : '';

        return $instance;
    }

}

// End About Us Widget.

?>

当您禁用tinymce时,我看到它正在工作。 - Goran Jakovljevic
请告知如何禁用tinymce? - Mansukh Khandhar
3个回答

5

谢谢你建议我尝试这个答案,但是无法运行。 - Mansukh Khandhar

0

今天,两年后我遇到了类似的问题并解决了它。 我在页面构建器中使用英雄小部件,输入了一些内容并想将其设置为标题,但编辑器不允许任何选项,而在普通编辑器中一切正常。但是在页面构建器模式下无法正常工作。 我重新启动了电脑,删除了所有缓存,当我使用其他浏览器时它就可以正常工作了。


0

这可以很容易地通过默认小部件完成,该小部件位于您的wp-includes/widgets/class-wp-widget-text.php中。

  1. 将代码复制到您的子主题的functions.php中。

  2. 将类名“WP_Widget_Text”重命名为您需要的任何其他名称

  3. 您可以在以下代码中更改小部件名称。不要更改任何其他代码。 parent::__construct('text',__('Your new widget name'),$widget_ops,$control_ops);

  4. 然后使用以下代码注册小部件。

     function wpb_load_widget() {
         register_widget( 'Your widget class name' );
     }
     add_action( 'widgets_init', 'wpb_load_widget' );
    

屏幕截图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接