Fügen Sie die Schaltfläche zum TinyMCE-Benutzermenü hinzu

Ich habe dem TinyMCE Visual Editor eine neue Schaltfläche mit einem Menü hinzugefügt, die dieses äußerst hilfreiche Tutorial verwendet , möchte nun jedoch weitere Elemente zu diesem Menü hinzufügen, je nachdem, ob verschiedene Post-Typen in meinem Thema aktiv sind. Ich denke, ich bin mit addMenuItem und ‘context’ auf dem richtigen Weg, kann aber nicht herausfinden, wie man das in der richtigen Reihenfolge einrichtet.

Mein Plugin-Code:

add_action('admin_head', 'nto_add_shortcode_button'); function nto_add_shortcode_button() { global $typenow; // check user permissions if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) { return; } // verify the post type if( ! in_array( $typenow, array( 'post', 'page' ) ) ) return; // check if WYSIWYG is enabled if ( get_user_option('rich_editing') == 'true') { add_filter("mce_external_plugins", "nto_add_tinymce_plugin"); add_filter('mce_buttons', 'nto_register_my_tc_button'); } } function nto_add_tinymce_plugin($plugin_array) { $plugin_array['nto_shortcode_button1'] = plugins_url( '/text-button.js', __FILE__ ); return $plugin_array; } function nto_register_my_tc_button($buttons) { array_push($buttons, "nto_shortcode_button1"); return $buttons; } 

Dann, wenn ich meinen Beitrag einführe:

 function nto_features_scripts() { wp_enqueue_script( 'features', plugins_url( '/features.js', __FILE__ ), array(), 'false', true ); } add_action( 'admin_head', 'nto_features_scripts', 100 ); 

Dann endlich, in features.js:

 tinymce.init({ selector: "textarea", toolbar: "mybutton", setup: function(editor) { editor.addMenuItem('myitem', { text: 'My menu item', context: 'nto_shortcode_button1', onclick: function() { editor.insertContent('Some content'); } }); } }); 

Kehrt zurück:

Uncaught ReferenceError: tinymce ist nicht definiert

F: Wie kann ich diesen Zusatz zu meiner benutzerdefinierten Schaltfläche korrekt initiieren?

Solutions Collecting From Web of "Fügen Sie die Schaltfläche zum TinyMCE-Benutzermenü hinzu"

Es sieht so aus, als wäre es ein Fehler, weil TinyMCE ( editorremov glaube ich) noch nicht geladen wurde. Entweder haken Sie die admin_footer Aktion anstelle von admin_head (interessanterweise haben Sie die in_footer Option als true deklariert und es funktioniert immer noch nicht) oder deklarieren Sie die Abhängigkeit editorremov, wenn Sie das Skript in die editorremov stellen:

 wp_enqueue_script( 'features', plugin_dir_url( __FILE__ ) . 'features.js', array( 'editorremov' ), 'false', true );