wp_redirect不保存在functions.php中,具体取决于位置

时间:2019-07-11 20:48:03

标签: wordpress

我要在functions.php中添加一些代码(在wp引擎中托管的wordpress主题编辑器中),具体取决于我放置wp_redirect的位置,它将保存还是不保存

示例:执行此操作后将保存

add_action('template_redirect','test_template');

//this one saves fine
function test_template() {
    global $wp_query;
    $userId = $wp_query->get( 'userId', NULL );
    $url = get_site_url();
    if ( NULL !== $userId ) {
        wp_redirect($url);
        exit;
    }
}

//However, when I do this I get: "Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP."

function test_template() {
    global $wp_query;
    $userId = $wp_query->get( 'userId', NULL );
    $url = get_site_url();
    wp_redirect($url);
    exit;
}

不确定为什么第二个功能将无法保存吗?

1 个答案:

答案 0 :(得分:1)

第二个触发无限重定向循环。根据WordPress Codex:https://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect

  

此动作挂钩在WordPress确定要加载哪个模板页面之前执行

这意味着它将在每次加载页面模板之前运行。因此,基本上在wp_redirect($ url)之后,动作template_redirect将被钩住并再次重定向。