0

Looking for help on inserting this code via functions.php or anywhere else in Wordpress. I tried this and it does not seem work... I cannot see it in the source code

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

Thank-you for your help.

`

4

3 回答 3

5

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

于 2013-07-18T20:49:31.080 回答
2

最灵活的方法是在您的子主题函数文件中使用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' );

    }
}

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

如果您希望将脚本放置在结束标记之前,请将第 5 个参数$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' );

    }

}

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

于 2014-02-18T02:31:13.940 回答
2

“正确”的做法是使用 wp_enqueue_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 可以正确排队,您可以在一个独立的文件中更新它,然后根据需要取消注册。

于 2013-07-18T21:57:20.643 回答