Intereting Posts
Как я могу показать <li> только в том случае, если пользовательское поле имеет контент Как изменить цвет зависания (фокус) панели администратора из интерфейса? Создать ссылку на полноразмерное вложение изображения? Как получить термин link, который пересекает различные пользовательские типы сообщений? Как отредактировать ссылку для комментария Зачем писать разметку для index.php? Перезапись форматированных стилей CSS WordPress Функциональность контроллера – Пользователь не зарегистрирован / перенаправлен на страницу регистрации (не wp_login) wp_ajax_nopriv_xxx не работает на одном сайте, работает на всех остальных. -1 для зарегистрированных пользователей Что означает, что «означает, что ваша тема является тегом заголовка и нижнего колонтитула WordPress»? персонализированный планировщик сообщений для черновиков Функция переопределения в классе в дочерней теме Выпадающее меню в пользовательском меню Подкаталог multisite – только root admin доступен в NGINX добавить параметр в рубрики по URL-адресам

Обратный вызов короткого кода для add_action ('wp_footer')

Я пытаюсь создать короткий код Google Maps, используя gMap- плагин из Github, а не простой iframe. Для чего я должен повторить собственный встроенный скрипт для короткого кода EACH, непосредственно перед закрывающим тегом body, после загрузки jQuery и всех других скриптов.

Следующий короткий код работает, но он только добавляет встроенный скрипт один раз, а не для каждого короткого кода. Когда я добавляю три коротких кода [map], он должен добавить встроенный скрипт для каждого из коротких кодов, трех встроенных скриптов, в нижний колонтитул. Но он добавляет только один скрипт. Который является одним из последнего короткого кода.

class map_class { protected static $var = ''; public static function map_callback($atts) { extract(shortcode_atts(array( 'address' => 'Main Street, New York City, United States', 'zoom' => '14' ), $atts)); $id= rand(); $script = '<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>'; $script .= '<script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#googlemap' . $id . '").gMap({ address: "' . $address . '", zoom: ' . $zoom . ' }); }); </script>'; self::$var = $script; add_action( 'wp_footer', array ( __CLASS__, 'footer' ), 20 ); return '<div id="googlemap' . $id . '" class="googlemap" style="height: ' . $height . '"></div>'; } public static function footer() { echo self::$var; } } add_shortcode( 'map', array ( 'map_class', 'map_callback' ) ); 

$ script содержит все три встроенных скрипта, но когда я пытаюсь вызвать $ script в add_action, вот так:

 add_action( 'wp_footer', array ( __CLASS__, $script ), 20 ); 

.. Я получаю следующую ошибку:

«Предполагается, что первый аргумент будет действительным обратным вызовом»

Я ценю любую помощь здесь.

Solutions Collecting From Web of "Обратный вызов короткого кода для add_action ('wp_footer')"

каждый раз, когда вы вызываете функцию shortcode, вы перезаписываете предыдущий скрипт var текущей версией. сделайте его массивом вместо строки:

 self::$var[] = $script; 

и затем выводить с помощью foreach:

 public static function footer() { foreach( self::$var as $script ){ echo $script; } }