Intereting Posts
Как удалить стиль заголовка и CSS заголовка с определенной страницы Активировать другую тему для предварительного просмотра Как предотвратить обновление WordPress измененного времени? WordPress запрашивает данные FTP при установке плагинов Дублируйте новые уведомления о регистрации пользователя (BuddyPress и bbPress оба установлены) «Конфликт» с действием deleted_post и is_admin () Запуск короткого кода галереи в пользовательском полевом виджете Переписать URL-адреса для LeadPages из-за установки подкаталога Используйте Git в SSH, чтобы вытащить определенные каталоги WordPress Внедрение JQuery не работает при перезагрузке страницы Shortcode не работает на статической странице Добавить размер изображения, где генерируется максимально возможный пропорциональный размер виджеты в нижнем колонтитуле? Несколько заданий wp_schedule_event cron в плагине вызывают многократное выполнение хочу прекратить удаление из моего сообщения

Инициализировать 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 для передачи ему информации.