除了admin之外,为每个页面添加Javascript到wordpress

时间:2013-07-18 20:45:48

标签: javascript wordpress

寻求有关通过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'); ?>

谢谢你的帮助。

`

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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可以正常排队,您可以在一个自包含的文件中更新它,然后根据需要取消注册。

答案 2 :(得分: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' );

    }
}

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

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

此方法使您可以将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' );

    }

}

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