Wordpress如何使用header.php在模板中的头之前获得输出


Wordpress how to get the output before the header in the templates using header.php

要求:我有一个下面的脚本来锁定Wordpress页面。当我应用于特定模板时,它运行良好。因此,我没有在17个不同的模板上添加脚本,而是使用!is_front_page()语句将其放在header.php文件中,因此脚本应该适用于除主页之外的所有页面。

问题:只有当我将脚本放在第1行的页面顶部而没有任何空格时,脚本才能工作,否则会引发错误(警告:无法修改标头信息-标头)。

我的错误原因:正如我前面提到的,我将以下脚本放在了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 );
 ?>

你可以在你的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 更新