2013-06-25 22 views
1

我正在開發一個Wordpress插件,它需要在編輯器中添加一個按鈕。點擊按鈕後,會打開一個對話框,其中包含一些表單域。用戶可以填寫數據,當他們「提交」時,它會在編輯器中創建一個簡碼。在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