在Wordpress中添加Javascript - 使用wp_enqueue_script()函数.php

时间:2016-04-04 04:01:37

标签: javascript php jquery html wordpress

我想将自定义javascript添加到我的wordpress页面。

我尝试了wp_enqueue_script(),但它不起作用。当我尝试在Inspect元素中直接添加脚本时,它正常工作,所以我的脚本是正确的。

现在我在function.php文件中创建函数来添加脚本,但它不起作用。当我检查页面源时,它显示脚本/文件被加载到页面中。但它什么都不做。

以下是我的脚本和功能。

Javascript -

jQuery(".tp-tab").mouseenter(function() {
  jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
  jQuery(this).addClass("selected");
});

function.php中的函数

    function mytheme_custom_scripts() {

            if ( !is_admin() ) {
                $scriptsrc = get_stylesheet_directory_uri() . '/wp-content/themes/circles/js/';
                wp_register_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', 'jquery', '1.0',  false );
                wp_enqueue_script( 'myhandle' );
            }

        }

add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );

/wp-content/themes/circles/js/目录位置,我的脚本附有文件名slider_hover_effect.js,其中包含以上javascript代码。

请告诉我有没有其他方法可以在我的wordpress网站上添加此脚本。另外,我想仅为主页添加/应用此脚本。这是可能的。

谢谢,

更新

我不确定我应该在get_stylesheet_directory_uri()/js/文件夹之后提供完整路径。

我可以使用喜欢 -

function slider_effect() { ?>
    <script type="text/javascript">

jQuery(".tp-tab").mouseenter(function() {
  jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
  jQuery(this).addClass("selected");
});

    </script>

    <?php

}

add_action('wp_head','slider_effect');

4 个答案:

答案 0 :(得分:3)

在你的functions.php中

function mytheme_custom_scripts(){
    if ( is_home() || is_front_page()) {
            $scriptSrc = get_template_directory_uri() . '/js/slider_hover_effect.js';
            wp_enqueue_script( 'myhandle', $scriptSrc , array(), '1.0',  false );
    }
}
add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );

JavaScript文件(slider_hover_effect.js)

$( document ).ready(function($) {
    $( 'body' ).on( 'mouseenter', '.tp-tab', function () {
        $(this).removeClass("selected");
    });
    $( 'body' ).on( 'click', '.tp-tab', function () {
        $(this).addClass("selected");
    });
});
  1. 检查浏览器控制台是否有任何错误。
  2. 查看页面来源,查看该文件是否包含在源代码的底部。
  3. 可能存在一些优先级问题,要检查是否尝试在wp_enqueue_script函数中将'false'参数更改为'true'(因此脚本将添加到标题中)。
  4. 我希望这会有所帮助。

答案 1 :(得分:1)

试试这个:

<强>的functions.php

function mytheme_custom_scripts() {
// No need to check admin, 'wp_enqueue_scripts' only enqueues at the frontend 
            $scriptsrc = get_stylesheet_directory_uri() . '/js/';
            wp_register_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', array('jquery'), '1.0',  false );
            wp_enqueue_script( 'myhandle' );

    }

add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );

检查完整的代码:https://developer.wordpress.org/reference/functions/wp_enqueue_script

你不应该在'wp_head'中打印JS,除非你不能这样做。

<强> slider_hover_effect.js

jQuery(document).ready(function($){
   $(".tp-tab").mouseenter(function() {
     $(this).removeClass("selected");
   });
   $(".tp-tab").click(function() {
     $(this).addClass("selected");
   });
});

答案 2 :(得分:1)

尝试此操作,使用!is_admin()

更改is_home()
 function mytheme_custom_scripts() {
          if ( is_home() ) {
                    $scriptsrc = get_stylesheet_directory_uri() . '/js/';
                    wp_enqueue_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', array(), '1.0',  false );
           }
     }

add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );

或:

function slider_effect() {
if ( is_home() ) {
 ?>
    <script type="text/javascript">
jQuery(function(){
jQuery(".tp-tab").mouseenter(function() {
  jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
  jQuery(this).addClass("selected");
});
});
    </script>

    <?php }

}

add_action('wp_head','slider_effect');

答案 3 :(得分:0)

我相信你在回调wp_enqueue_script

中调用时,忘记了mytheme_custom_scripts中的src参数

来自wordpress docs:

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

参数

$处理 (字符串)(必需)脚本的名称。

$ SRC (string | bool)(可选)WordPress根目录中脚本的路径。示例:'/ js /myscript.js'。 默认值:false

所以我相信你的代码应该是:

 wp_enqueue_script( 'myhandle' , $scriptsrc . 'slider_hover_effect.js');

另一种方法是,如果您可以创建自定义插件并激活该插件,以允许您在插件的index.php文件中包含这样的自定义js或css:

add_action( 'init', 'my_script' );

function my_script() {
    if( is_home() ){
        wp_enqueue_script('my_script', plugins_url('js/script.js', __FILE__), array('jquery'));
        wp_enqueue_style('my_style', plugins_url('css/style.css', __FILE__));
    }
}

您将文件放在js /或css / dir中,这可以正常工作