2015-11-25 38 views
0

要求: 模板中的标题之前获得输出我有一个以下脚本来锁定Wordpress页面。当我应用于特定模板时,它工作正常。因此,我不是在17个不同的模板上添加脚本,而是使用!is_front_page()声明将其放在header.php文件中,因此脚本应该可以在除主页外的所有页面上运行。WordPress的如何使用header.php

问题:脚本只有在第一行没有任何空格的情况下才放在页面的最顶端,否则会引发错误(警告:不能修改标题信息 - 标题)。

错误在我的情况下的原因:正如我前面提到的,我把以下脚本放在header.php文件中。所以错误显示,因为这条线<?php get_header(); ?>这是在模板文件(和下面的代码必须在<php get_header(); ?>之前。所以我的问题是,是否有任何好转,我们可以做以下脚本或我需要把?在所有模板脚本上的第一行手动

<?php 
     if(!is_user_logged_in()) 
     $redirect = home_url() . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']); 
     wp_redirect($redirect); 
?> 
+0

只要发生任何输出,连接就会从发送“标题”信息变为发送“正文”信息。重定向使用标题信息告诉用户浏览器该页面实际上可以在其他地方找到。因此,您只能在任何主体获得输出之前重定向用户。 – samlev

回答

1

你可以在你的functions.php试试这个 - 挂钩代码为WordPress的钩所以它使用的头被称为等之前...这意味着它得到

function password_protected() { 
    if (!is_user_logged_in()) { 
     $redirect = home_url() . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']); 
     wp_redirect($redirect); 
    } 
} 
add_action('init', 'password_protected'); 

更新致谢@rnevius

+1

'init'或'parse_request'挂钩会更合适(也更快)。不需要多次挂钩。 – rnevius

+0

完美,伟大的感谢家伙。 –

相关问题