2013-06-25 4 views
1

Я работаю над плагином для Wordpress, который требует добавления кнопки в редактор. При нажатии кнопки открывается диалоговое окно с некоторыми полями формы. Пользователь может заполнить данные, и когда они «отправят», он создает короткий код в редакторе.Скрипты Enqueue в диалоговом окне плагина 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 для создания короткого кода и отбросить его в редактор.

+1

для текста: «0». вы должны положить ** die() или выйти ** в конце вашей функции ** my_dialog_window ** – softsdev

ответ

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); 

для второй точки

Вы должны позвонить умереть() или выхода функция в конце вашей функции обратного вызова (my_dialog_window)

+0

Спасибо за ответ. Я просто хочу, чтобы эти скрипты были привязаны к диалоговому окну в редакторе, хотя НЕ на лицевой стороне, а не на других страницах. Будет ли ваш код работать так? – Dexter

+0

попытайтесь создать короткий код вашего скрипта и поместите этот короткий код в определенном месте, где хотите – softsdev