有没有办法直接使用 wp_enqueue_script 添加 JavaScript ?
Is there a way to use wp_enqueue_script for adding JavaScript directly?
有没有办法直接将 Javascript 添加到页面,但让 Wordpress 等待 jQuery 加载?就像使用 wp_enqueue_script
?
在自定义页面模板中,我有以下代码:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') : ?>
<script>
$(function() {
App.dialogs.afterPetitionCreate();
});
</script>
<?php endif; ?>
Wordpress 咆哮说 $ 未定义。现在我不想加载整个 .js 文件只是为了调用该函数。所以从这个意义上说 wp_enqueue_script
不是一个选项。我只想直接在页面上触发一些 JavaScript,但我确实想等待 jQuery 加载。
这也是我尝试过的,使用 Wordpress 将 JavaScript 添加到页脚:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') :
add_action('wp_footer', 'my_footer_scripts');
function my_footer_scripts() { ?>
<script>
$(function () {
App.dialogs.afterPetitionCreate();
});
</script>
<?php } ?>
<?php endif; ?>
但不幸的是出现了同样的错误$ is undefined
。
那么在自定义 Wordpress 页面模板上快速加载一些 Javascript 并等待 jQuery 加载的正确方法是什么?
这是我最终编写的代码,完全符合我的要求。就像提到的 Submit Parkash 一样,需要使用 jQuery 而不是 $.
/*
* Adds a single bit of Javascript to the page.
*/
function theme_embed_script($script) {
add_action('wp_footer', function ($script) {
echo '<script type="text/javascript">' . $script . '</script>';
}, 10);
do_action('wp_footer', $script);
}
用法:
<?php theme_embed_script('jQuery(function () { alert("Hello"); });'); ?>
或者像 David 提到的那样使用 Wordpress 的 wp_add_inline_script()
脚本。
您是否尝试过 运行 文档就绪事件中的脚本,如下面的代码?
<script>
jQuery(document).ready(function($){
$(function () {
App.dialogs.afterPetitionCreate();
});
});
</script>
加载文档对象或 DOM 时会发生 .ready 事件,这使得放置所有 jquery 事件和其他函数变得完美。
我认为这不是一个好的做法。
逻辑最好改成这样:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') : ?>
<input type='hidden' id='status' name='status' value='newly_created'>
<?php endif; ?>
script.js:
$(function() {
if ( $('#status').val() === 'newly_created' ) {
App.dialogs.afterPetitionCreate()
}
});
和
wp_enqueue_script( 'afterPetitionCreate', '/path/to/script.js', array( 'jquery' ), '', true );
p.s。你可以将 wp_enqueue_script()
换成 is_page_template( 'my-cool-page-teplate.php' )
。
有没有办法直接将 Javascript 添加到页面,但让 Wordpress 等待 jQuery 加载?就像使用 wp_enqueue_script
?
在自定义页面模板中,我有以下代码:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') : ?>
<script>
$(function() {
App.dialogs.afterPetitionCreate();
});
</script>
<?php endif; ?>
Wordpress 咆哮说 $ 未定义。现在我不想加载整个 .js 文件只是为了调用该函数。所以从这个意义上说 wp_enqueue_script
不是一个选项。我只想直接在页面上触发一些 JavaScript,但我确实想等待 jQuery 加载。
这也是我尝试过的,使用 Wordpress 将 JavaScript 添加到页脚:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') :
add_action('wp_footer', 'my_footer_scripts');
function my_footer_scripts() { ?>
<script>
$(function () {
App.dialogs.afterPetitionCreate();
});
</script>
<?php } ?>
<?php endif; ?>
但不幸的是出现了同样的错误$ is undefined
。
那么在自定义 Wordpress 页面模板上快速加载一些 Javascript 并等待 jQuery 加载的正确方法是什么?
这是我最终编写的代码,完全符合我的要求。就像提到的 Submit Parkash 一样,需要使用 jQuery 而不是 $.
/*
* Adds a single bit of Javascript to the page.
*/
function theme_embed_script($script) {
add_action('wp_footer', function ($script) {
echo '<script type="text/javascript">' . $script . '</script>';
}, 10);
do_action('wp_footer', $script);
}
用法:
<?php theme_embed_script('jQuery(function () { alert("Hello"); });'); ?>
或者像 David 提到的那样使用 Wordpress 的 wp_add_inline_script()
脚本。
您是否尝试过 运行 文档就绪事件中的脚本,如下面的代码?
<script>
jQuery(document).ready(function($){
$(function () {
App.dialogs.afterPetitionCreate();
});
});
</script>
加载文档对象或 DOM 时会发生 .ready 事件,这使得放置所有 jquery 事件和其他函数变得完美。
我认为这不是一个好的做法。
逻辑最好改成这样:
<?php if (isset($_GET['status']) && $_GET['status'] == 'newly_created') : ?>
<input type='hidden' id='status' name='status' value='newly_created'>
<?php endif; ?>
script.js:
$(function() {
if ( $('#status').val() === 'newly_created' ) {
App.dialogs.afterPetitionCreate()
}
});
和
wp_enqueue_script( 'afterPetitionCreate', '/path/to/script.js', array( 'jquery' ), '', true );
p.s。你可以将 wp_enqueue_script()
换成 is_page_template( 'my-cool-page-teplate.php' )
。