Intereting Posts
Нет опции «Я хочу, чтобы мой сайт был приватным, видимым только для пользователей, которых я выбираю» в настройках конфиденциальности Получить изображения галереи из идентификатора страницы Как изменить URL-адрес (добавить значения GET) после отправки формы в конец? Как получить текущий идентификатор сообщения в functions.php Изменить каталог загрузки файлов PDF get_posts () и глобальные переменные Загрузка изображения застряла на «хрусте» Получение переменной с помощью $ post ajax обратно из ответа php на js в WP скопировать заголовок приложения в описание и текст alt Получить боковую панель в верхней части страницы Как создать переменную php с помощью функции WordPress the_title () обновить путь изображения со словами, начинающимися в верхнем регистре до строчных символов Изображения не отображаются в виде сетки, но отображаются в виде списка Переадресация поддоменов в таксономию Вернуться теги сообщения с описанием

Как мне нужно регистрировать JavaScript, который не является файлом?

Для плагина, который я создаю, он генерирует пользовательский JavaScript, который должен быть выполнен в нижнем колонтитуле страницы. Будучи тем, что это пользовательский JavaScript, я не могу просто поместить его в файл и зарегистрировать и вставить файл. Как мне заняться регистрацией и заполнением пользовательского JavaScript?

Примечание. Это будет для Shortcode. JavaScript будет выглядеть примерно так,

$("#CustomID").aFunction(withCustomData);

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

Редактировать 1

JavaScript «поистине» уникален. Он принимает параметры из самого короткого кода и может меняться в зависимости от времени. Опять же, это то, что постоянно меняется, и что-то, что нельзя вставлять в файл каждый раз, когда его нужно загружать.

Solutions Collecting From Web of "Как мне нужно регистрировать JavaScript, который не является файлом?"

Вы можете подключить действие wp_footer для вывода произвольного JavaScript. Это то же самое действие, которое WordPress использует для вывода сценариев, находящихся в очереди.

Вот пример, который инкапсулирует вывод короткого кода, данных и сценариев в класс:

 <?php /* Plugin Name: WPD_Example */ class WPD_Example_Plugin { public $data = array(); function __construct() { add_shortcode( 'wpd_example', array( $this, 'shortcode_func' ) ); add_action( 'wp_footer', array( $this, 'footer_scripts' ), 9999 ); } function shortcode_func( $atts ) { $atts = shortcode_atts( array( 'title' => 'title' ), $atts, 'wpd_example' ); $id = uniqid(); $this->data[$id] = $atts['title']; wp_enqueue_script( 'jquery' ); return '<div data-id="' . $id . '">' . $atts['title'] . '</div>'; } function footer_scripts() { if( !empty( $this->data ) ){ ?> <script type="text/javascript"> if ( undefined !== window.jQuery ) { jQuery(document).ready(function($) { var myData = <?php echo wp_json_encode( $this->data ); ?>; $.each( myData, function( id, title ) { console.log( id + ' : ' + title ); }); }); } </script> <?php } } } $wpd_plugin = new WPD_Example_Plugin; 

РЕДАКТИРОВАТЬ

Вот еще один пример, похожий на предыдущий, но вставляет сценарий и передает данные через wp_localize_script а не печатает js непосредственно на страницу. Вы можете получить доступ к любому из этих данных из установленного сценария в wpdScriptData . Прочитайте комментарии ниже этого ответа для объяснения того, почему этот метод безопаснее.

 <?php /* Plugin Name: WPD_Example */ class WPD_Example_Plugin { public $data = array(); function __construct() { add_shortcode( 'wpd_example', array( $this, 'shortcode_func' ) ); add_action( 'wp_footer', array( $this, 'footer_scripts' ), 0 ); } function shortcode_func( $atts ) { $atts = shortcode_atts( array( 'title' => 'title' ), $atts, 'wpd_example' ); $id = uniqid(); $this->data[$id] = $atts['title']; wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'wpd-script', plugins_url( '/js/script.js', __FILE__ ), array( 'jquery' ), null, true ); return '<div data-id="' . $id . '">' . $atts['title'] . '</div>'; } function footer_scripts() { if( !empty( $this->data ) ){ wp_localize_script( 'wpd-script', 'wpdScriptData', $this->data ); } } } $wpd_plugin = new WPD_Example_Plugin;