将Javascript添加到除admin之外的每个页面的wordpress中

Add Javascript to wordpress for every page except admin

本文关键字:wordpress 添加 Javascript admin      更新时间:2023-09-26

通过functions.php或Wordpress中的其他任何位置查找有关插入此代码的帮助。我试过了,但似乎不起作用。。。我在源代码中看不到它

<?php
 function add_this_script_footer(){ ?>
    <script type="text/javascript">
        var _paq = _paq || [];
        _paq.push(["trackPageView"]);
        _paq.push(["enableLinkTracking"]);

        (function() {
        var u=(("https:" == document.location.protocol) ? "https" : "http") + "://stats.domain.com/statsapp/";
        _paq.push(["setTrackerUrl", u+"piwik.php"]);
        _paq.push(["setSiteId", "445"]);
        var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
        g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
        })();
    </script>    <?php }
add_action('wp_footer', 'add_this_script_footer'); ?>

谢谢你的帮助。

`

您应该将其添加到模板文件中-添加到header.php或footer.php

"正确"的方法是使用wp_enque_script并将代码放在自己的js文件中。

因此,获取跟踪代码并将其保存在像site-tracking.js.这样的文件中

然后在functions.php文件中执行以下操作:

add_action('wp_enqueue_scripts', 'my_custom_scripts');
function my_custom_scripts(){
  /** here you can apply whatever logic you want to determine which pages
   *  your script gets included on, like wrap this in is_singular()
   */
  wp_enqueue_script('tracking', get_template_directory_uri().'/js/site-tracking.js', array(), '', null, true);
}

通过这种方式,您的javascript可以正确地排队,您可以在一个独立的文件中更新它,并根据需要进行注销。

最灵活的方法是使用wp_enqueue_scripts函数在子主题函数文件中使用自定义函数并自定义参数。

依赖jQuery

add_action( 'wp_enqueue_scripts', 'child_enqueue_scripts' );
function child_enqueue_scripts() {
if ( ! is_admin() ) {
wp_register_script( 'script-handle', get_bloginfo( 'stylesheet_directory' ) . '/your.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'script-handle' );
    }
}

一旦注册了脚本,就可以在文件中的其他代码中使用脚本句柄,而无需再次注册。

如果希望将脚本放在结束标记之前,请将第五个参数$in_footer设置为true,以便在页脚中执行。默认值:错误

这种方法使您能够使用带有条件标记的WordPress和主题特定挂钩,这比在模板文件中添加脚本更灵活。

子主题与父主题

更改

get_bloginfo( 'stylesheet_directory' )

get_stylesheet_directory_uri()

get_template_directory_uri()

在父主题中添加脚本时。

无相关性

对于不依赖jQuery的没有依赖项的脚本(如跟踪脚本),请在您的子主题函数文件中使用以下示例。

add_action( 'wp_enqueue_scripts', 'no_dependencies_enqueue_scripts' );
function no_dependencies_enqueue_scripts() {
if ( ! is_admin() ) {
wp_register_script( 'script-handle', get_stylesheet_directory_uri() . '/your.js', false, '1.0.0', true );
wp_enqueue_script( 'script-handle' );
    }
}

注意:这两个代码示例都假定包含脚本的文件位于子主题的根目录中。如果将脚本文件添加到单独的文件夹中,请更改此路径。

如果您想添加内联JavaScript代码,可以使用wp_add_inline_script

add_action( 'wp_enqueue_scripts', function() {
    wp_register_script( 'foobar', '',);
    wp_enqueue_script( 'foobar' );
    wp_add_inline_script( 'foobar', "console.log('hello world');");
} );

如果您想使jQuery成为一个依赖项,那么将第二行更改为:

    wp_register_script( 'foobar', '', ['jquery'], '', true );