【问题标题】:Wordpress editor not working with custom widgetWordpress 编辑器无法使用自定义小部件
【发布时间】:2015-11-19 02:25:10
【问题描述】:

我已经为 Add Wp-Editer 创建了脚本,它在其他地方工作正常,但在 WidgetPage Builder by SiteOrigin 不工作请帮助我... 看起来像这样 我的脚本如下。

<?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 时,我看到它的工作原理。
  • 请告知我如何禁用tinymce?

标签: wordpress widget editor


【解决方案1】:

问题是 TinyMCE 首先出现的地方有一个隐藏的小部件。

不要复制答案,请在此处查看:https://wordpress.stackexchange.com/questions/82670/why-cant-wp-editor-be-used-in-a-custom-widget

这有点复杂,但只是解决方法。

【讨论】:

  • 感谢您建议我这个答案已经尝试但无法工作。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这可以通过 wp-includes/widgets/class-wp-widget-text.php 中的默认小部件轻松完成

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

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

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

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

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

    Screenshot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2019-07-16
      • 2015-07-27
      相关资源
      最近更新 更多