无法在登录页面上的开始<BODY>标记后立即添加脚本?

时间:2020-09-29 作者:xojijog684

我正在尝试在打开后立即添加以下Google Tag Manager脚本<body> Wordpress登录页面上的标记。

Code that I want to insert

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

What I have tried

根据此处给出的解决方案:Adding body class to login page?, 我尝试了以下代码:

function my_custom_code2($classes){
?>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P3CWDSQ"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->";
<?php 
}

add_filter( \'login_body_class\', \'my_custom_code2\' );

Results

它不起作用。有人知道我怎么解决这个问题吗?

In response to Sally\'s query below, this is the full code I am using.

function my_custom_code1(){
?>
 
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({\'gtm.start\':
new Date().getTime(),event:\'gtm.js\'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';j.async=true;j.src=
\'https://www.googletagmanager.com/gtm.js?id=\'+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,\'script\',\'dataLayer\',\'GTM-XXXXX\');</script>
<!-- End Google Tag Manager -->

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->";

<?php 
}
add_action( \'login_head\', \'my_custom_code1\', 10 );
谢谢。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

打开后立即<body> 标签

WordPress没有提供挂钩,即在<body> 标签

但WordPress确实启动了一个名为login_header 我们可以使用它在body 标签已打开:

do_action( \'login_header\' )
打开body标记后,在登录页面标题中激发。

例如:

add_action( \'login_header\', \'wpse_375598\' );
function wpse_375598() {
    ?>
        Add your HTML here.
    <?php
}
顺便说一句,login_body_class 是一个可以用来将自定义CSS类添加到<body> 标签(即。<body class="here">), 因此,该挂钩不应用于添加(Google Tag Manager的)noscript 密码

同样在已编辑的问题中,问题是您使用了login_head 而不是login_headerlogin_head 用于在<head> 文档/页面的节。

因此,您的代码应该更像:

add_action( \'login_head\', \'wpse_375598_login_head\' );
function wpse_375598_login_head() {
    ?>
        Add your HTML here that goes in the <head>.
    <?php
}

add_action( \'login_header\', \'wpse_375598_login_header\' );
function wpse_375598_login_header() {
    ?>
        Add your HTML here that goes in the <body>.
    <?php
}