2012-12-03 50 views
3

我正在製作一個Wordpress插件,用於在帖子中添加圖像貼圖。目前我已經實現了圖像映射作爲自定義帖子類型。不過,我在添加帖子時遇到了一些麻煩。將內容插入Wordpress帖子編輯器

我在介質插入/上載窗口中創建了一個名爲Image map的新選項卡。當您在選項卡中單擊圖像映射時,此功能被觸發:

function insertImageMap() { 
    tinyMCE.execInstanceCommand('mceInsertContent', false, 'content', 
    'some text or html code' 
    ); 
    window.parent.tb_remove(); 
} 

但是沒有任何內容添加到tinyMCE編輯器中。該函數被觸發,但tinyMCE編輯器的實例未定義,即使我使用tinyMCE.getInstanceById('content')。有沒有辦法訪問編輯頁面的編輯器?

我已經在我的插件中包含tinyMCE腳本,並且它不顯示爲未定義。

我發現一個老問題,問相同的,但得到的答覆是不是非常有幫助:在評論中發現 Custom Wordpress Plugin - How do I insert content from popup on post editor?

+0

我認爲,這是因爲在彈出的居然是一個iframe。所以爲了訪問'tinyMCE'實例,你需要通過'window.opener'或'window.parent'來獲得它(我不能100%確定它是否是其他的)。所以你可以做'var instance = window.opener.tinyMCE || window.parent.tinyMCE; instance.execInstanceCommand('mceInsertContent',false,'content','一些文本或html代碼');'。此外,您可以查看源代碼(最可能是JS)並查看WordPress如何將內容發送到編輯器。 –

+0

其實你試過['window.send_to_editor()'](http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/js/media-upload.dev.js)? –

+0

那麼,腳本實際上並沒有在iframe中運行。我可以訪問tinyMCE本身的實例,但不能使用tinyMCE.getInstanceById()的文章編輯器。 – Spike

回答

9

解決方案:

function insertImageMap() { 
    window.parent.send_to_editor('any text'); 
    window.parent.tb_remove(); 
} 
相關問題