wp_localize_script with mce_external_plugins in wordpress

I am not sure if it is possible or not.

Can i use wp_localize_script with mce_external_plugins filter?

Read More

I want to send a variable to the tinymce plugin script. For Example:

add_filter( "mce_external_plugins", array( &$this, 'add_test_plugin' ) );

public function add_test_plugin( $plugin_array ){

    global $pagenow;

    if( is_admin() && $pagenow == "post.php" || $pagenow == "post-new.php" ){
        $plugin_array['mytest'] = plugin_dir_url(__FILE__) . '/js/testing.js';
        return $plugin_array;
    }

}

I have to send a variable to testing.js? How do i achieve this?

Update:

this is the link that help me to resolve my problem Using post ID in custom tinyMCE button

Related posts

Leave a Reply

2 comments

  1. If I understand correctly; you just need to make a Javascript variable available to testing.js.

    I think it would be just as useful to send the variable with jQuery, as that would be loaded prior to TinyMCE anyway:

    add_action('wp_enqueue_scripts', 'YOUR_NAME_scripts'); //back end
    
    function YOUR_NAME_scripts( $hook_suffix ) {
    
            global $blog_id;
            $params = array(
                'site_url' => site_url(),
                'admin_ajax_url' => site_url() . '/wp-admin/admin-ajax.php',
                'mytest' => $whatever_variable_value
    
    
             );
    
                wp_localize_script( 'jquery', 'YOUR_JAVASCRIPT_VARIABLE_HOLDER', $params );
    
    }
    

    Then you can access the mytest variable in testing.js by simply using YOUR_JAVASCRIPT_VARIABLE_HOLDER.mytest anywhere in the script.

  2. The WordPress documentation on the mce_external_plugins filter hook proposes to use two filter hooks to add your variable to testing.js:
    admin_head-post.php and admin_head-post-new.php
    https://codex.wordpress.org/Plugin_API/Filter_Reference/mce_external_plugins

    This is the sample:

    foreach ( array('post.php','post-new.php') as $hook ) {
         add_action( "admin_head-$hook", 'my_admin_head' );
    }
    
    /**
     * Localize Script
     */
    function my_admin_head() {
        $plugin_url = plugins_url( '/', __FILE__ );
        ?>
    <!-- TinyMCE Shortcode Plugin -->
    <script type='text/javascript'>
    var my_plugin = {
        'url': '<?php echo $plugin_url; ?>',
    };
    </script>
    <!-- TinyMCE Shortcode Plugin -->
        <?php
    }