使用添加JavaScriptwp_enqueue_script
:
首先,尽管它可能会起作用(如果您在调用之前添加它
wp_head()
), 但你不应该添加
wp_enqueue_script
代码输入
header.php
. 使用主题
functions.php
文件。
其次,代码中的以下行有问题:
wp_enqueue_script( \'animated\', get_template_directory_uri() . \'/js/animated.js\' );
正如你所用
jQuery
在您的
animated.js
文件,您必须说它取决于
jQuery
. 下面是代码的实现方式:
wp_enqueue_script( \'animated\', get_template_directory_uri() . \'/js/animated.js\', array( \'jquery\' ) );
第三,您已分配
$meta
变量输入
page-custom.php
模板文件,因此您只能调用
wp_localize_script
之后,否则变量将保留
null
. 此外,由于此模板文件将在
header.php
, 您必须添加
/js/animated.js
在页脚中,如下所示:
wp_enqueue_script( \'animated\', get_template_directory_uri() . \'/js/animated.js\', array( \'jquery\' ), null, true );
那么,您添加的最终代码
/js/animated.js
将(在
functions.php
):
// This CODE should be in functions.php file
function drum_scripts() {
wp_enqueue_script( \'animated\', get_template_directory_uri() . \'/js/animated.js\', array( \'jquery\' ), null, true );
}
add_action( \'wp_enqueue_scripts\', \'drum_scripts\' );
放置wp_localize_script
一旦变量可访问:
因为您正在分配
$meta
变量输入
page-custom.php
文件,您应该将调用添加到
wp_localize_script
有:
$custom_query = new WP_Query( $args );
while ($custom_query->have_posts()) : $custom_query->the_post();
$meta = get_post_meta( $post->ID, \'your_fields\', true );
// $meta[image] is only accessible after the above CODE is executed
wp_localize_script(\'animated\', \'MyScriptParams\', array(
\'foo\' => $meta[\'image\']
)
);
带有jQuery的JavaScript代码:
jQuery
$
变量不能在该范围内定义。因此,不要使用此代码:
$(function() {
$(".animated").hover(
function() {
$(this).attr("src", MyScriptParams.foo);
},
function() {
$(this).attr("src", "img/gallery1_500px.jpg");
}
);
});
在主题中使用以下代码
/js/animated.js
文件:
(function($) {
// assuming you have .animated CSS class in the right place
$(".animated").hover(
function() {
$(this).attr("src", MyScriptParams.foo);
},
function() {
$(this).attr("src", "img/gallery1_500px.jpg");
}
);
})(jQuery);
现在,如果代码中的其他内容都正常,那么修改后的代码应该可以工作了。
您可以学习WordPress执行顺序from Here, 如果你想知道在哪里发生了什么。
更新:
您的
page-custom.php
看起来一点都不对劲。您的PHP文件中肯定存在错误&;许多错误-这超出了这个问题的范围。然而,为了确保
wp_localize_script
正在工作,请使用下面的简单代码
page-custom.php
文件(仅此代码,而非您的代码):
<?php get_header(); ?>
<!-- CONTAINER FOR CONTENT -->
<div class="container">
<div class="row">
<?php
wp_localize_script(\'animated\', \'MyScriptParams\', array(
\'foo\' => "It Works!"
)
);
?>
</div> <!-- END OF ROW -->
<?php get_footer(); ?>
调试问题的经验法则是先把简单的事情做好&;然后从中积累。我们不能同时解决许多问题。如果使用上述代码后,您的警报为
It Works!
, 然后您就可以确定问题出在PHP代码中。