1

I'm trying to create simple widget with TinyMCE rich editor but it's not working

My widget code:

add_action('widgets_init', 'string_example_name_init');

function string_example_name_init()
{
    register_widget('string_example_name');
}

class string_example_name extends WP_Widget
{
    public function __construct()
    {
        $widget_details = array(
            'classname' => 'string_example_name',
            'description' => 'String Example Name'
        );

        parent::__construct('string_example_name', 'String Example Name', $widget_details);
    }

    public function form($instance)
    {
        $textcontent = '';
        if( !empty( $instance['textcontent'] ) ) {
            $textcontent = $instance['textcontent'];
        }

        ?>

        <div class="string-arena-gods" id="texxxt">
            <?php
            $rand    = rand( 0, 999 );
            $ed_id   = $this->get_field_id( 'wp_editor_' . $rand );
            $ed_name = $this->get_field_name( 'wp_editor_' . $rand );

            printf(
                '<input type="hidden" id="%s" name="%s" value="%d" />',
                $this->get_field_id( 'the_random_number' ),
                $this->get_field_name( 'the_random_number' ),
                $rand
            );


            $content   = 'Hello World!';
            $editor_id = $ed_id;

            $settings = array(
                'media_buttons' => false,
                'textarea_rows' => 3,
                'textarea_name' => $ed_name,
                'teeny'         => true,
            );


            wp_editor( $content, $editor_id, $settings );
            ?>
        </div>

        <div class='mfc-text'>

        </div>

        <?php

        echo $args['after_widget'];
    }

    public function update( $new_instance, $old_instance ) {
        $rand = (int) $new_instance['the_random_number'];
        $editor_content = $new_instance[ 'wp_editor_' . $rand ];
        $new_instance['wp_editor_' . $rand] = $editor_content;
        return $new_instance;
    }

    public function widget( $args, $instance ) {
        extract( $args );
        $textcontent = apply_filters( 'textcontent', $instance['textcontent'] );
        ?>

        <div class="string widget flex">
            <?php


            ?>
        </div>
        <?php
    }
}

My Script Enqueue :

/**
 * Add TinyMCE to multiple Textareas (usually in backend).
 */
 add_action('admin_print_footer_scripts','my_admin_print_footer_scripts',99);
function my_admin_print_footer_scripts() {
    ?>


    <script type="text/javascript">/* <![CDATA[ */
     jQuery(function ($) {
var options={
        selector: 'textarea[id*=tinymce_textarea]',
            height: 200,
            theme: 'modern',
            plugins: ["textcolor colorpicker"],
            toolbar1: 'bold,italic,underline,bullist,numlist,link,unlink,forecolor,undo,redo,alignleft,aligncenter,alignright,alignjustify,styleselect,formatselect,fontselect,fontsizeselect,fullscreen,forecolor,backcolor,textcolorselect'
        };
    tinyMCE.init(options);
    $(document).find('input[id*=savewidget]').hover(function () {
        tinyMCE.triggerSave();
    });

    $(document).on('widget-updated', function (event, $widget) {
        tinyMCE.remove();
        tinyMCE.init(options);
    });
}
    /* ]]> */</script>


    <?php
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.