web-dev-qa-db-fra.com

TinyMCE popup windows en utilisant WP les fonctions

Dans mon éditeur, j'aimerais utiliser une fenêtre contextuelle générée par TinyMCE pour insérer dans la zone de texte des codes courts complexes. J'utilise l'API TinyMCE pour afficher la fenêtre contextuelle (au bas de cette question). Le popup est un fichier PHP dans mon thème. J'aimerais:

  1. Pour protéger ce fichier des accès externes (if ( ! defined( 'ABSPATH' ) ) ne fonctionne pas).
  2. Utilisez certaines fonctions WP dans cette fenêtre contextuelle.

Quelle est la façon dont vous pourriez suggérer?

Appel de l'API TinyMCE

init : function(ed, url) {
        // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mcecax_webnews');
        ed.addCommand('mcecax_webnews', function() {
                ed.windowManager.open({
                        file : url + '/dialog.php',
                        width : 650 + ed.getLang('cax_webnews.delta_width', 0),
                        height : 500 + ed.getLang('cax_webnews.delta_height', 0),
                        inline : 1
                }, {
                        plugin_url : url, // Plugin absolute URL
                        some_custom_arg : 'custom arg' // Custom argument
                });
        });
[...] CUTTED
3
Francesco

Le popup d'un TinyMCE est en dehors de WordPress. Vous devez inclure le wp-load.php, le même descripteur qu'en dehors de l'installation de WordPress.

Mais pensez à cette solution et peut-être que c'est plus propre, que vous créiez vos données dans une chaîne json et que vous manipuliez ces données dans le popup Il est utile de lire this post à propos de l'inclusion od wp-load.php.

Vous trouverez ici un Gist avec un exemple pour écrire une boîte de dialogue contextuelle TinyMCE dans WordPress, sans inclure le wp-load.php. L'auteur a également écrit un tutorial , mais uniquement en allemand.

Aussi, l'indice de cette question WPSE à propos d'un tutoriel. Ce tutoriel crée le contenu popup uniquement avec javascript. Peut-être que plus sécurisé et les données pour le handle vont également communiquer via JS à l'éditeur.

1
bueltge