Как мне загрузить мой сценарий ПОСЛЕ сценариев ELEMENTOR в конце тела - PullRequest
0 голосов
/ 16 сентября 2018

Я пытался выяснить, что делают плагины Elementor (и Elementor Pro) в Wordpress, чтобы их скрипты загружались последними в теле, потому что мой плагин Script должен загружать ПОСЛЕ тех. Его нужно загрузить прямо перед тегом end body.

<script type='text/javascript' src='https://example.com/wp-content/plugins/elementor/assets/lib/swiper/swiper.jquery.min.js?ver=4.4.3'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var elementorFrontendConfig = {"isEditMode":"","is_rtl":"","breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"urls":{"assets":"https:\/\/example.com\/wp-content\/plugins\/elementor\/assets\/"},"settings":{"page":[],"general":{"elementor_global_image_lightbox":"yes","elementor_enable_lightbox_in_editor":"yes"}},"post":{"id":406,"title":"Chat","excerpt":""}};
/* ]]> */
</script>
<script type='text/javascript' src='https://example.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=2.2.1'></script>
</body>
</html>

Я пытался увеличить приоритет для моих скриптов:

add_action( 'wp_enqueue_scripts', 'ajax_chat_enqueue_scripts',999999,1);

И я ставлю в нижний колонтитул с 'footer = true' в конце:

wp_enqueue_script( 'chat-post', plugins_url( '/chat-post.js', __FILE__ ), null, null, true );

Но мой скрипт не будет отображаться ПОСЛЕ скрипта frontend.min.js.

Я гуглил эту тему, но в итоге получаю те же ответы о том, как поместить ваш скрипт в нижний колонтитул. Там нет ничего о том, что адский Elementor делает, чтобы заставить их сценарии до дна.

Я нашел решение: поставьте мои скрипты в очередь в моем плагине так:

add_action( 'elementor/frontend/after_enqueue_scripts', 'ajax_chat_enqueue_scripts', 999999, 1);

Но это похоже на взлом. Я хотел бы решить эту проблему с помощью тега wp_enqueue_scripts.

1 Ответ

0 голосов
/ 16 сентября 2018

Если ваш сценарий зависит от других сценариев или сценариев и должен быть вставлен после того, как эти сценарии работают правильно, в WordPress вы можете использовать wp_enqueue_script () и передавать массив зависимостей (третий параметр в wp_enqueue_script называется $ deps) от этого метода зависит ваш скрипт.

wp_enqueue_script( string $handle, string $src = '', array $deps = array(),
 string|bool|null $ver = false, bool $in_footer = false )

пример:

wp_register_script('myScript', get_template_directory_uri() . '/javascripts/myscript.js',
 array('jquery','bootstrap'), null, true );

В приведенном выше примере myscript зависит от сценариев jquery и начальной загрузки.

Или по любой причине, если вы хотите вставить скрипт за другим, попробуйте это:

function my_scripts() {
        wp_register_script('myscript', get_template_directory_uri() . '/javascripts/myscript.js', null, null, true );
        wp_enqueue_script('myscript');
}
add_action( 'wp_enqueue_scripts', 'my_scripts', 20, 1)

воспроизведение и изменение параметра $ priority метода add_action для ловушки wp_enqueue_scripts

...