受密码保护的页面的WordPress“ postpass”无法正确重定向

时间:2019-01-28 19:31:30

标签: php wordpress

我继承了此网站(即,我没有建立它)。在WordPress常规设置中,我有:

WordPress Address: https://example.com/dev
Site Address: https://example.com

WordPress目录确实位于一个名为“ dev”的文件夹中,我可以通过FTP看到它。但是,当我浏览面向公众的网站时,在URL中我从未看到过“ dev”。我以前从未见过以这种方式配置的WordPress主机。

无论如何,我们有几个页面使用通用的WordPress“可见性:密码保护”方法进行了密码保护。生成密码输入的页面模板如下:

<form action="https://example.com/dev/wp-login.php?action=postpass" class="pass-form post-password-form" method="post">
    <p>This content is password protected. To view it please enter your password below:</p>
    <p><input type="password" class="pw-enter" name="post_password" id="pwbox-<?php the_ID(); ?>" size="20" /> <input type="submit" class="access-btn" name="Submit" value="Submit" /></p>
</form>

在Firefox中可以正常使用。但是,在Safari和Chrome中,重定向都不会发生。提交密码后,该页面似乎只是重新加载或坐在那里,而不执行任何操作。

我怀疑它与WordPress地址中的“ dev”有关。

在表单中,如果我将操作更改为此:

https://example.com/wp-login.php?action=postpass

...尝试提交密码时出现“找不到页面”错误。如此看来,浏览器正确地进入了wp-login.php,但没有从那里重定向回到原始页面?为了将经过身份验证的密码重新加载到该页面,需要去哪里。

如果我进入WordPress常规设置并从URL中删除“ dev”,则整个站点都会中断。

关于我应该在哪里寻找此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,在旧帖子中找到了以下functions.php的代码

function dcg_password_form_fix() {
global $post;
$label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
$o = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
' . __( "To view the contents of this page, enter the password below:" ) . '
<label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="hidden" name="_wp_http_referer" value="'.get_permalink().'" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
</form>';
return $o;}add_filter( 'the_password_form', 'dcg_password_form_fix' );

秘密似乎是这条线

<input type="hidden" name="_wp_http_referer" value="'.get_permalink().'" />

在我的主题中,PopularFX 就像一个魅力