エディターにボタンを追加する必要がある 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 を使用してショートコードを作成し、エディターにドロップしたいだけなので、これにはコールバック関数は必要ありません。