Intereting Posts
Назначение персонализированного сообщения для пользовательской таксономии на основе настраиваемого значения поля совместное использование wp-include – wp-admin на той же установке Ссылка на все сообщения (включая все категории) WordPress – Портфолио – изменение количества элементов в строке Что такое таблицы pmxi? добавить onchange для выбора в формате wp Изменения шаблона темы исчезают при изменении страницы После миграции сервера серверный процессор перегружается, когда я пытаюсь активировать WPML Теги шаблона vs get_template_part () vs functions.php Как добавить новую страницу плагина на странице желаемых параметров? Как добавить плагин GEO для членства в плагин? Добавить новую кнопку «Вставить в сообщение» с другой функцией Идеи о том, как организовать проект Показывать ошибочные сообщения о неправильном имени пользователя / пароле в пользовательской форме входа? Добавить пользовательские классы для привязки в wp_nav_menu

манипулировать шорткодом плагинов

Я хочу добавить некоторые javascript непосредственно под контентом, добавленным кодовым кодом другого плагина.

Мы используем плагин NextGen Gallery, и есть много статей, содержащих короткий код [nggallery]. Я не хочу менять все статьи, и я не хочу информировать всех авторов о том, чтобы использовать другой короткий код в будущем. И я также не хочу изменять оригинальный плагин.

Есть ли способ изменить короткий код, например:

function put_script_after_nggallery_shortcode( $atts ){ return "[nggallery $atts] <script>foo();</script>"; } add_shortcode( 'nggallery', 'put_script_after_nggallery_shortcode' ); 

или я должен каким-то образом подключиться к процессу рендеринга the_content (), чтобы поместить мой сценарий в строку ___постоянии после [nggallery id = nnn]. Может ли быть сделано с фильтром для_content?

ты мог

 remove_shortcode( 'nggallery' ); 

и затем добавьте его снова:

 function put_script_after_nggallery_shortcode( $atts ){ global $nggShortcodes; $nggShortcodes->show_gallery($atts); //or otherwise duplicate the callback function wp_enqueue_script('special-ngg-sciprt', 'url-to-script', null, null, true); } add_shortcode( 'nggallery', 'put_script_after_nggallery_shortcode' ); 

я не уверен, что моя show_gallery будет работать, но кажется логичной

какой сценарий вам нужно добавить? почему не просто wp_enqueue_script сам по себе? нет никакой причины, чтобы код сценария был встроенным.

EDIT # 1

Поскольку $ nggShortcodes, по-видимому, не является глобальной переменной, мы можем попробовать использовать объектную нотацию … или вы можете просто скопировать содержимое обратного вызова shortcode галереи NextGen, если это не сработает. Кроме того, я добавил проверку класса, чтобы убедиться, что это не сломает ваш сайт, если NextGen отключен.

 function put_script_after_nggallery_shortcode( $atts ){ if( ! class_exists('NextGEN_Shortcodes')) return; NextGEN_Shortcodes->show_gallery($atts); //or paste in the callback function ?> <script type="text/javascript"> jQuery(document).ready(function($) { alert('bacon'); }); </script> <?php } add_shortcode( 'nggallery', 'put_script_after_nggallery_shortcode' ); 

Начиная с WordPress 4.7 вы можете использовать фильтр do_shortcode_tag .

 add_filters( 'do_shortcode_tag', 'wpse_106269_do_shortcode_tag', 10, 4 ); function wpse_106269_do_shortcode_tag( $output, $tag, $attr, $m ) { if( $tag === something ) { //* Do something useful } return $output; }