2013-10-26 51 views
1

沒有人知道一種方法從WordPress簡碼字符串或jQuery中將參數和內容提取到Javascript數組或變量中嗎?用Javascript提取WordPress簡碼字符串

短代碼是這樣的:

[button url="http://...." color="#00000"]Contact me![/button] 

或像這樣:

[tabs] 

    [tab title="Title 1"]Content Tab 1[/tab] 

    [tab title="Title 2"]Content Tab 2[/tab] 

[/tabs] 

我試圖找到一個圖書館或一些工作正則表達式,但我couldn`t找到一些。

情況:

我媒體鏈接開發的短碼生成器,它從用戶的值生成的簡已經在輸入字段插入。現在我想要oposit方式:

用戶在編輯器中選擇一個短代碼,然後按下「編輯生成器」按鈕,然後JavaScript從短代碼中獲取參數。之後,它使用jquery-ui從這個簡碼中打開對話框。然後它應該將值填入對話框的匹配字段中,以便用戶可以輕鬆編輯它們。

我認爲匹配的javascript版本的wordpress函數shortcode_atts()會做這項工作嗎?!

Thx爲您的幫助!

+0

我不認爲正則表達式適合這一點。 –

+0

爲什麼要使用JavaScript?你不應該使用Wordpress Shortcode API嗎? http://codex.wordpress.org/Shortcode_API – itsazzad

+0

情況是,我希望用戶能夠用鼠標在wordpress編輯器中選擇短代碼。當用戶選擇這個短代碼並按下「編輯短代碼」按鈕時,我想爲這個特殊的短代碼打開一個模式對話框,並在輸入字段中填入短代碼的值,以便用戶可以編輯它們。 這是相反的方式。不從輸入字段生成短代碼,但使用javascript將短代碼參數重新插入短代碼生成器輸入字段。 這就是爲什麼我需要使用JavaScript而不是PHP功能,因爲PHP運行已經完成。 – oneside

回答

2

我會做的是打印簡碼內JS變量:

add_shortcode('buttons', 'js_vars_so_19604963'); 

function js_vars_so_19604963($atts, $content = null, $shortcode) 
{ 
    $output = 'Normal shorcode work here'; 

    $output .= '<script type="text/javascript"> 
     var sc_button_color = "' . $atts['color']. '"; 
     </script>'; 

    return $output; 
} 

然後,訪問它們在JavaScript:console.log(sc_button_color)


用戶選擇在編輯器中一個短碼並按下按鈕「編輯與發生器」,然後JavaScript的獲取從短碼的參數。

要知道用戶在內容框中選擇了什麼,我們需要tinyMCE.activeEditor.selection.getContent。必須使用RegEx解析此getContent以提取確切的簡碼及其屬性。沒有預先制定的解決方案,你必須從頭開始構建,並且每個案例都是如此。

+0

當然,我們總是可以嘗試[用RegEx解析HTML](http://stackoverflow.com/a/1732454/1287812);) – brasofilo

+0

請再次閱讀我的帖子,我添加了一些必要的額外信息。謝謝! – oneside

+0

@oneside,我添加了您要查找的信息。 – brasofilo

0

WordPress在wp對象shortcode上有一個新對象。它是一個構造函數,用於製作wp.shortcode Javascript對象。你可以使用它的方法來做各種事情。我認爲最好是inspect the implementation in WordPress core,它的評論很好,並且已經實施了一些方法。

此方法允許您在通過使用回調函數替換它們的字符串中處理簡碼。

wp.shortcode.replace(tag, text, callback) 

當您需要從其他地方處理字符串中獲取短代碼並保存對它們的引用時,此方法非常有用。

wp.shortcode.next(tag, text, index) 

此方法生成RegExp以識別短代碼。基本正則表達式在功能上等同於get_shortcode_regex()中的那個。

wp.shortcode.regexp(tag) 

這個方法讓我們從文本中解析shortcode屬性。

wp.shortcode.attrs(text) 

有一個更多的看法,見核心。