WordPress wp_enque_scripts似乎不起作用

我创建了一个WordPress主题的子项,现在我正在尝试将自定义JavaScript插入主页 通过修改孩子的functions.php。 但是,我的脚本没有被加载,我不知道为什么。 我在php代码中插入了'echo'语句,好像是</ p>

  add_action('wp_enque_scripts','video_bg',10); 
</ code> < / pre>

无法调用</ p>

  video_bg()
</ code> </ pre>

这是函数 我孩子的.php:</ p>

 &lt;?php 

add_action('after_setup_theme','post_theme_setup');

if(!function_exists('post_theme_setup) ')):

函数post_theme_setup(){

函数video_bg(){

wp_enque_script('myVideo',get_stylesheet_directory_uri()。'/ JS / filmScript.js',array('jquery'),'1.0。 0',false);
echo'&lt; script&gt; console.log(“脚本已添加?”)&lt; / script&gt;';
}

add_action('wp_enque_scripts','video_bg',10) ;
echo'&lt; script&gt; console.log(“Loop Entered”)&lt; / script&gt;';

}
endif;
</ code> </ pre>

以下是控制台告诉我的内容:</ p>

  Loop Entered(index):1 
JQMIGRATE:已安装Migrate,版本1.4.1 jque ry-migrate.min.js?ver = 1.4.1&amp; nocache = 1:2
</ code> </ pre>

有人可以告诉我为什么video_bg()永远不会被调用吗? 或者其他问题是什么?</ p>
</ div>

展开原文

原文

I've created a child of a WordPress theme and now I'm trying to insert custom JavaScript into the home page by modifying functions.php of the child. However, my script is not being loaded and I'm not sure why. I've inserted 'echo' statements into the php code and it seems like

add_action( 'wp_enque_scripts', 'video_bg', 10);

fails to call

video_bg()

Here's the functions.php of my child:

<?php


add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){

    function video_bg() {
        wp_enque_script( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }

    add_action( 'wp_enque_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

And here's what the console is telling me:

Loop Entered                                      (index):1 
JQMIGRATE: Migrate is installed, version 1.4.1    jquery-migrate.min.js?ver=1.4.1&nocache=1:2 

Could anyone please tell me why video_bg() never gets called? Or is the problem in something else?

1个回答



如果在添加一些add_action时未调用该函数,则有两种可能的情况:
1。 您输入了错误的操作/过滤器挂钩名称。
2。 您加载的页面不会触发该挂钩。</ p>

在这种情况下,您执行了第1次。 没有一个名为wp_enque_scripts的钩子,没有一个名为wp_enque_scripts的函数。
将它们更改为wp_enqueue_scripts。 </ p>

  add_action('wp_enqueue_scripts','video_bg',10); 
add_action('after_setup_theme','post_theme_setup');

if(!function_exists('post_theme_setup') )):

函数post_theme_setup(){

函数video_bg(){

wp_enqueue_scripts('myVideo',get_stylesheet_directory_uri()。'/ JS / filmScript.js',array('jquery'),'1.0.0 ',false);
echo'&lt; script&gt; console.log(“脚本已添加?”)&lt; / script&gt;';
}

add_action('wp_enqueue_scripts','video_bg',10);

echo'&lt; script&gt; console.log(“Loop Entered”)&lt; / script&gt;';

}
endif;
</ code> </ pre>

你 也可以优化你的代码:</ p>

  add_action('after_setup_theme','post_theme_setup'); 

if(!function_exists('post_theme_setup')):
function post_theme_setup (){
add_action('wp_enqueue_scripts','video_bg',10);
echo'&lt; script&gt; console.log(“Loop Entered”)&lt; / script&gt;';

}
endif;

函数video_bg(){
wp_enqueue_scripts('my 视频',get_stylesheet_directory_uri()。 '/JS/filmScript.js',array('jquery'),'1.0.0',false);
echo'&lt; script&gt; console.log(“Script added?”)&lt; / script&gt;';

}
</ code> </ pre>
</ div>

展开原文

原文

If the function isn't called when you added it some add_action, there are 2 possible cases: 1. You entered wrong action/filter hook name. 2. Your loaded page doesn't trigger that hook.

In this case you did the 1st. There is not a hook called: wp_enque_scripts, there is not a function called wp_enque_scripts. Change them to wp_enqueue_scripts.

add_action( 'wp_enqueue_scripts', 'video_bg', 10);
add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){

    function video_bg() {
        wp_enqueue_scripts( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }

    add_action( 'wp_enqueue_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

You can also optimize your code like that:

add_action( 'after_setup_theme', 'post_theme_setup' );

if ( !function_exists( 'post_theme_setup' )):
function post_theme_setup(){
    add_action( 'wp_enqueue_scripts', 'video_bg', 10);
    echo '<script>console.log("Loop Entered")</script>';

}
endif;

  function video_bg() {
        wp_enqueue_scripts( 'myVideo', get_stylesheet_directory_uri() . '/JS/filmScript.js', array('jquery'), '1.0.0', false );
        echo '<script>console.log("Script added?")</script>';
    }

doubian6241
doubian6241 实际上,还有一个问题。 echo事件只是一个Firefox控制台问题 - 适用于Chrome。 wp_enqueue_scripts('myVideo',get_stylesheet_directory_uri()。'/ JS / filmScript.js',array('jquery'),'1.0.0',false); 虽然行导致内部服务器错误。 不知道为什么。 当我评论出来时 - 一切都没有问题
2 年多之前 回复
duanqian9593
duanqian9593 可能是post_theme_setup在此之前在父主题中声明,这就是原因。 尝试在子主题中重命名该功能。 实际上你并不需要它。
2 年多之前 回复
donglu3087
donglu3087 哇,那太尴尬了,哈哈。 谢谢! 但是,现在WordPress似乎完全忽略了孩子的functions.php。 没有“echo”语句打印到控制台。 即使我将代码简化为<?php标签和回声线 - 它仍然没有显示。 可能与代码无关 - 也许WordPress只是在窃听。 我该怎么检查? 太感谢了!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问