【问题标题】:Add Javascript in Wordpress - functions.php with wp_enqueue_script()在 Wordpress 中添加 Javascript - functions.php 与 wp_enqueue_script()
【发布时间】:2016-04-04 04:01:37
【问题描述】:

我想将我的自定义 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/ 文件夹。

或者

我可以用like吗-

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');

【问题讨论】:

    标签: javascript php jquery html wordpress


    【解决方案1】:

    在你的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'(因此脚本将添加到标题中)。

    我希望这会有所帮助。

    【讨论】:

    • 您的所有清单都正常工作。脚本文件正在加载,控制台中没有错误。仍然脚本不起作用。
    • 你能把console.log(123);在 "$(function() {" 之后看看控制台中是否有 123?
    • 我尝试在 Page 上的 JS 脚本中打印一些文本并且它可以工作。但我的代码不起作用。我要添加的效果基于滑块类。当我检查元素时,这些类显示但不在 pagesource 中
    • 但是,如果你打开页面源,这个文件(slider_hover_effect.js)在那里可用吗?注意:如果添加了 is_home 条件查看主页的页面源。
    • 我还在函数中添加了 is_front_page() 条件。请查看更新后的答案。
    【解决方案2】:

    试试这个,把!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');
    

    【讨论】:

    • 您确定/js/ 文件位置吗?我应该使用相同的还是提供完整的路径。或者我可以直接在函数中使用它是&lt;script&gt;&lt;/script&gt;
    • 你问我们大声笑你知道你把脚本放在哪里你应该知道路径
    • 我知道我的文件在哪里。我问我应该提供完整的路径还是像这样/js/
    • 你的文件应该在 /themename/js/slider_hover_effect.js 如果页面没有列出你的脚本你有错误的 url 用浏览器去那里
    • 是的,我的 js 文件在主题的 js 目录中。检查有问题的更新
    【解决方案3】:

    试试这个:

    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");
       });
    });
    

    【讨论】:

    • 您确定/js/ 文件位置吗?我应该使用相同的还是提供完整的路径。或者我可以直接在函数中使用它是&lt;script&gt;&lt;/script&gt;
    • 您不必使用完整路径@RahulDambare。请再次检查它是否正常工作,它是一个经过良好测试的代码
    • 我检查了您的代码.. 并检查了页面 js 文件的源代码是否已加载到源代码中。但是代码仍然无法正常工作。我应该在 js 文件中使用 $ 而不是 jQuery 字吗.. 请检查有问题的更新
    • 首先检查文件是否现在添加到页面中。您可能还想将您的 jquery 包装在 JQuery(document).ready(function(){});
    • 如果可能,请您添加完整的 jQuery 代码。
    【解决方案4】:

    我相信您在回调 mytheme_custom_scripts 中调用时忘记了 wp_enqueue_script 中的 src 参数

    来自 wordpress 文档:

    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'。 默认值:假

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

     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/ 目录中,这样就可以了

    【讨论】:

    • 我不知道如何在插件中实现此代码。由于这只是一个小代码,我希望将它写在 fuctions.php 文件中。您能否提供正确的代码
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多