首先,我要求你們所有人在點擊負向箭頭前全部閱讀這個問題,我真的在這裏遇到一個非常有線的問題,而且沒有在網上找到任何類似的答案。如何在wordpress短代碼中多次停止排隊同一個腳本
我想要做的事:
我創建一個WordPress插件安裝,你只需要添加一個短代碼,並通過一些參數與簡碼後,然後它會顯示一個滑塊根據您的參數數據在您的文章中。
現在,因爲它是一個滑塊,它主要是基於jQuery做花哨的東西。現在將shortcode參數傳遞給jquery,我正在接受wp_localize_script()
的幫助,以便我可以訪問我的jquery腳本中的shortcode參數。
問題:
正如我傳遞簡碼屬性值的本地化劇本,我必須要調用wp_register_script()
,wp_localize_script()
,wp_enqueue_script()
所有add_shortcode()
塊內。
因爲如果我在add_shortcode()
之外創建另一個函數來排列我的腳本wp wp_enqueue_scripts
動作,那麼即使在執行短代碼之前它也會被觸發。所以wp_localize_script()
不能將shortcode屬性傳遞給jquery腳本。現在
add_shortcode('some_shortcode', function($atts) {
//extracting the shortcode attributes
$shortcode_data = shortcode_atts(array(
'arg1' => '',
'arg2' => ''
..... so on....
), $atts);
extract($shortcode_data);
// doing my programming with the shortcode
// in the end echoing some html
/*--------------------------------------*/
// Now coming the script adding part
$dir = plugin_dir_url(__FILE__);
/* CSS */
wp_enqueue_style('some_style', $dir . 'assets/css/some_style.css', null, null);
/* JS */
wp_register_script ('some_script', $dir . 'assets/js/some_script.js');
wp_localize_script('some_script', 'someData', $shortcode_data);
wp_enqueue_script('some_script', true);
wp_enqueue_script('some_other_script', $dir . 'assets/js/some_other_script.js');
});
我的插件工作得很好,沒有任何問題,但無論如何現在而來的大問題。如果我在一個或多個頁面中包含這個短代碼超過1次,那麼每次執行短代碼時都會推送相同的css和js文件。
因此,最終,沒有一個短代碼能夠正常工作,因爲整個系統會混淆哪些數據傳遞給哪個js腳本。
如果你們中的任何人都可以幫助我解決這個奇怪的問題,那將會非常有幫助。我真的沒有了解如何解決這個奇怪問題的線索。
你確定同一個腳本獲得雙入列嗎?你見過這個嗎? WP入隊系統是爲了防止這種情況發生,只要名稱標識符和版本每次都是相同的(在你的情況下它們會是)。 –
使用oop你可以解決這個問題。只需將腳本排入類的構造函數中即可。 –
讓我重新審視。給我2分鐘 – iSaumya