Intereting Posts
Включить администратора в список авторов Настройка отдельных изображений на сообщениях Запретить отображение настраиваемого типа сообщений в пользовательских меню Настройка контекстной справки для каждой страницы Перечислить один пост только из каждой подкатегории с помощью get_posts? Список дочерних настраиваемых типов сообщений перечисляет все пользовательские типы сообщений Как организовать сообщение по категориям и дате Добавление функции обратного вызова для wp_ajax_ не влияет Как получить страницу пользовательских 500 ошибок для показа? Скрипт в боковой панели блокирует загрузку другого виджета Как добавить значок в новый элемент панели управления? Создать пользовательскую конечную точку API доступа, которая переносит существующую конечную точку? Как я могу извлечь URL-адреса изображения из метаданных Добавление префикса к названию темы ПК Не удалось загрузить плагины WordPress

Инициализировать add_action () для каждой копии определенного короткого кода

У меня есть короткий код, который генерирует слайдер. Все работает отлично, пока я не попытаюсь добавить еще один «партнерский» слайдер с различными вариантами. Я не могу задать конкретные настройки для каждого слайдера, потому что функция print_partners_scripts () генерируется только один раз. Мне нужно инициализировать функцию print_partners_scripts () для каждого слайдера, указанного в параметрах короткого кода. Надеюсь, вы понимаете, что я имею в виду;)

function print_partners_scripts() { global $extra_options, $pslider; echo '<script type="text/javascript">' . "\n"; echo 'jQuery(document).ready( function() {'. "\n"; echo ' $(".'.$pslider.'").bxSlider({ slideWidth: 924, auto: 1, autoStart: 1, moveSlides: 1, minSlides: 7, maxSlides: 8, pager: false, controls: false, slideMargin: 5, autoHover: true ' . $extra_options . ' });' . "\n"; echo '});' . "\n"; echo '</script>' . "\n"; } function partners($atts ) { global $extra_options, $pslider; extract(shortcode_atts(array( 'ids' => null, 'extra_options' => null ), $atts)); add_action( 'wp_footer', 'print_partners_scripts' ); $pslider = 'partners-slider'.rand(100,999); $ids = explode( ',', $ids ); $output = '<div class="section row-one"><div class="col ps-gradient"><div class="ps-wrap"><div class="'.$pslider.'">'; foreach($ids as $id) { $img_attr = wp_get_attachment_image_src( $id, 'full' ); $alt_text = get_post_meta( $id, '_wp_attachment_image_alt', true); $output .= '<div class="pslide"><a href="' . $alt_text . '"><img src="' . $img_attr[0] . '" /></a></div>'; } $output .= '</div></div></div></div>'; return $output; } add_shortcode('partners', 'partners'); 

Solutions Collecting From Web of "Инициализировать add_action () для каждой копии определенного короткого кода"

Вы можете передать значения, добавив свой собственный фильтр. Доказательство концепции:

 add_filter( 'my_filter', function() { return array(1,2,3); } ); function print_partners_scripts() { $args = apply_filters('my_filter',null); var_dump($args); } add_action( 'wp_footer', 'print_partners_scripts' ); 

Если вы хотите зарегистрировать и поставить в очередь свой скрипт вместо того, чтобы отсылать его непосредственно на страницу, вы можете использовать wp_localize-script для передачи ему информации.