在 wordpress 中的任意位置点击打开广告
Open ad clicking anywhere in wordpress
我有 wordpress 网站,我正在使用这个脚本
onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>"
在 body 行中。所以这意味着我正在使用
<body <?php body_class(); ?> onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>">
在主题的 header.php 文件上。
但它会在每次点击时打开 link。
我只想打开它一次,直到我刷新页面或打开新页面。
我该怎么做。
请帮忙。
提前致谢。
你好。
如 setcookie function reference 所说:
cookies must be sent before any output from your script
第一个解决方案
你可以把这个加在最上面哦header.php:
<?php
$onclick = '';
if(!isset($_COOKIE['visited'])) {
setcookie('visited', '1', time()+3600*24, COOKIEPATH, COOKIE_DOMAIN);
$onclick = 'onclick="window.open(\'http://link\', \'_blank\')"';
}
?>
Update:我添加了常量 COOKIEPATH
和 COOKIE_DOMAIN
,例如 explained here.
这是你的 body
标签:
<body <?php body_class(); ?> <?php echo $onclick; ?>>
更好的解决方案
先前的解决方案不能确保在发送任何输出之前设置 cookie(在调用 get_header()
之前,您的模板文件中可能有一些字符,或者插件可以添加一些东西)。
相反,您应该向始终在任何输出之前调用的 Wordpress 挂钩添加一个操作(如 init
)。
所以尝试添加到您的 functions.php 文件:
add_action('init', 'set_visited_cookie');
function set_visited_cookie() {
if (!isset($_COOKIE['visited'])) {
setcookie('visited', '1', strtotime('+1 day'), COOKIEPATH, COOKIE_DOMAIN);
}
}
至于你的 body
标签:
<body <?php body_class(); ?> <?php if(!isset($_COOKIE['visited'])): ?> onclick="window.open('http://link', '_blank')" <?php endif; ?>>
我有 wordpress 网站,我正在使用这个脚本
onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>"
在 body 行中。所以这意味着我正在使用
<body <?php body_class(); ?> onclick="<?php if(!isset($_COOKIE['visited'])){echo"window.open('http://link', '_blank')"; setcookie("visited", "1", time()+3600*24); header("Refresh:0");} ?>">
在主题的 header.php 文件上。
但它会在每次点击时打开 link。 我只想打开它一次,直到我刷新页面或打开新页面。 我该怎么做。 请帮忙。 提前致谢。
你好。
如 setcookie function reference 所说:
cookies must be sent before any output from your script
第一个解决方案
你可以把这个加在最上面哦header.php:
<?php
$onclick = '';
if(!isset($_COOKIE['visited'])) {
setcookie('visited', '1', time()+3600*24, COOKIEPATH, COOKIE_DOMAIN);
$onclick = 'onclick="window.open(\'http://link\', \'_blank\')"';
}
?>
Update:我添加了常量 COOKIEPATH
和 COOKIE_DOMAIN
,例如 explained here.
这是你的 body
标签:
<body <?php body_class(); ?> <?php echo $onclick; ?>>
更好的解决方案
先前的解决方案不能确保在发送任何输出之前设置 cookie(在调用 get_header()
之前,您的模板文件中可能有一些字符,或者插件可以添加一些东西)。
相反,您应该向始终在任何输出之前调用的 Wordpress 挂钩添加一个操作(如 init
)。
所以尝试添加到您的 functions.php 文件:
add_action('init', 'set_visited_cookie');
function set_visited_cookie() {
if (!isset($_COOKIE['visited'])) {
setcookie('visited', '1', strtotime('+1 day'), COOKIEPATH, COOKIE_DOMAIN);
}
}
至于你的 body
标签:
<body <?php body_class(); ?> <?php if(!isset($_COOKIE['visited'])): ?> onclick="window.open('http://link', '_blank')" <?php endif; ?>>