web-dev-qa-db-ja.com

TinyMCEポップアップウィンドウ WP 関数

私のエディタでは、TinyMCEで生成されたポップアップを使ってテキストエリアに複雑なショートコードを挿入したいと思います。私はTinyMCE APIを使ってポップアップを表示します(この質問の最後)。ポップアップは私のテーマの中のPHPファイルです。をお願いします:

  1. このファイルを外部アクセスから保護する(if ( ! defined( 'ABSPATH' ) )は機能しません)。
  2. このポップアップ内でいくつかのWP関数を使用してください。

あなたが提案できる方法はどれですか?

TinyMCE API呼び出し

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

TinyMCEのポップアップはWordPressの外部にあります。 WordPressインストールの外と同じハンドル、wp-load.phpを含める必要があります。

しかし、このソリューションについて考えてみてください。json文字列でデータを作成し、ポップアップでこのデータを処理する方がよりクリーンかもしれません。 include od wp-load.phpについて この投稿 を読むと役立ちます。

ここでは、wp-load.phpを含めずに、WordPressでTinyMCEポップアップダイアログを作成する例を含む Gist を見つけます。著者は tutorial も書いていますが、これはドイツ語のみです。

また、これに対するヒント WPSE Question チュートリアルについて。このチュートリアルでは、JavaScriptのみを使用してポップアップコンテンツを作成します。おそらくより安全で、ハンドルのデータもjsを介してエディターと通信します。

1
bueltge