1

エディターにボタンを追加する必要がある Wordpress のプラグインに取り組んでいます。ボタンをクリックすると、いくつかのフォーム フィールドを含むダイアログが開きます。ユーザーはデータを入力し、「送信」するとエディターにショートコードが作成されます。

ボタンをエディターに追加することに成功し、AJAX 呼び出しを開始してダイアログをロードしました。これを可能にする JS のスニペットを次に示します。

ed.windowManager.open(
    {
        file : ajaxurl + '?action=my_dialog_window',
        width : 480 + parseInt(ed.getLang('my_app.delta_width',0)),
        height : 300 + parseInt(ed.getLang('my_appdelta_height',0)),
        inline : 1
    },
    {
        plugin_url : url,
        some_custom_arg : 'custom arg'
    }
)

私のモジュールでは、次を呼び出しています。

add_action('wp_ajax_my_dialog_window', 'my_dialog_window');

その基本的な機能は次のようになります。

function my_dialog_window()
{
    // Queue JavaScript
    wp_enqueue_script("jquery");
    wp_enqueue_script("tiny_mce_popup",MY_WP_PLUGIN_URL."/js/tiny_mce_popup.js");
    wp_enqueue_script("my-dialog",MY_WP_PLUGIN_URL."/js/my-dialog.js");

    // Display Form
    echo "<form id=\"myForm\" method=\"post\">
        <tr>
            <td align=\"right\" class=\"gray dwl_gray\"><strong>Field:</strong></td>
            <td valign=\"top\"><input name=\"answer1\" type=\"text\" id=\"answer1\" size=\"40\" /></td>
        </tr>
        ...
    </table>

    <div class=\"mceActionPanel\">
        <div class=\"fl\"><input type=\"button\" id=\"insert\" name=\"insert\" value=\"Insert\" onclick=\"MyInsertDialog.insert();\" /></div>
        <div class=\"fr\"><input type=\"button\" id=\"cancel\" name=\"cancel\" value=\"Cancel\" onclick=\"tinyMCEPopup.close();\"/></div>
    </div>
    </form>";
}

したがって、エディターでボタンをクリックすると、ダイアログが読み込まれます。2 つの問題が発生しています。

まず、javascript が含まれていません。ストレート リンクに切り替えることはできますが、「ベスト プラクティス」では wp_enqueue_script を使用しているため、これに対応しようとしています。

次に、フォームの下部に「0」というテキストがあります。同じ関数であるコールバック関数が見つからないようです。my-dialog.js を使用してショートコードを作成し、エディターにドロップしたいだけなので、これにはコールバック関数は必要ありません。

4

1 に答える 1

2

なぜあなたはそのようにすることができないのですか

最初のポイント

function my_dialog_scripts() {
    wp_enqueue_script("jquery");
    wp_enqueue_script("tiny_mce_popup",MY_WP_PLUGIN_URL."/js/tiny_mce_popup.js");
    wp_enqueue_script("my-dialog",MY_WP_PLUGIN_URL."/js/my-dialog.js");
}
add_action('wp_enqueue_scripts', my_dialog_scripts);

2点目

コールバック関数 ( my_dialog_window )の最後でdie() または exit関数を呼び出す必要があります。

于 2013-06-25T13:12:19.260 に答える