假设资产文件夹位于主题目录中,则需要将主题目录(可以通过PHP获得)发送到JavaScript。(如果这是一个插件,而资产文件夹位于您的插件目录中,则可以使用类似的方法,但发送的确切代码会有所不同。)
在WordPress中,使用PHP可以找到样式表目录,它是主题的根目录(即使您使用的是子主题)。
$theme_dir = wp_get_stylesheet_directory_uri();
这将存储以下内容
http://www.domain.com/wp-content/themes/yourtheme/如果您的JavaScript直接位于页面模板上,您只需在获得PHP主题目录时直接将其写入JavaScript即可:
$(window).scroll(function(e){
e.preventDefault();
var scrollPos = $(window).scrollTop();
if(scrollPos >= 100){
$(\'#portfolio-cover\').css({\'backgroundImage\':\'url("<?php echo get_stylesheet_directory_uri(); ?>/assets/img/top-page2.jpg")\'});
}
这不是最佳实践,因为您有一种语言将自己注入到另一种语言中,这也意味着您的JavaScript位于页面模板上,这样就不太容易重用,也不太干净。
如果JavaScript位于单独的文件中,即后台滚动。js,您必须首先通过WordPress排队系统正确加载它。然后你可以发送一个变量(比如你的主题目录)到它。
您将使用刚才创建的$theme\\u dir变量。
function wpse_329739_enqueue_scripts(){
$theme_dir = get_stylesheet_directory_uri();
wp_enqueue_script( \'background-scroll\', $theme_dir . "/assets/js/background-scroll.js" );
}
add_action( \'wp_enqueue_scripts\', \'wpse_329739_enqueue_scripts\' );
最后一部分是发送我们创建的变量,以便您的脚本可以使用它。为此,我们通过localize\\u脚本函数传递一个变量数组,即使这只是一个变量。
我们的代码变成:
function wpse_329739_enqueue_scripts(){
$theme_dir = get_stylesheet_directory_uri();
$variables = array(
"theme_dir" => $theme_dir
);
wp_enqueue_script( \'background-scroll\', $theme_dir . "/assets/js/background-scroll.js" );
wp_localize_script( \'background-scroll\', \'PHPVARS\', $variables );
}
add_action( \'wp_enqueue_scripts\', \'wpse_329739_enqueue_scripts\' );
因此,我们将变量(主题目录名称)包装到一个数组中,然后告诉WordPress将其作为JavaScript对象传递给我们的脚本。
在我们的脚本中,我们可以通过提供的名称(PHPVARS)访问它,即PHPVARS。theme\\u目录。
$(window).scroll(function(e){
e.preventDefault();
var scrollPos = $(window).scrollTop();
if(scrollPos >= 100){
$(\'#portfolio-cover\').css({\'backgroundImage\':\'url("\' + PHPVARS.theme_dir + \'/assets/img/top-page2.jpg")\'});
}