Wordpress编辑器不使用自定义小部件

时间:2015-11-19 02:25:10

标签: wordpress widget editor

我已经为添加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.

?>

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分: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' );
    

Screenshot