【问题标题】:WordPress : Password Protected PageWordPress:密码保护页面
【发布时间】:2016-10-05 06:16:34
【问题描述】:

我需要有关 WordPress 密码保护页面的帮助。

输入密码后,您通常会被重定向到您输入的同一页面或输入密码后仅显示内容的页面。

我想要的是,在我输入正确的密码后,它会重定向到我网站的另一个页面。这怎么可能?尽可能不使用任何插件。

下面是我的functions.php代码:

<?php
function my_password_form() {
    global $post;
    $label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
    $output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
    <p><strong>'.__("Cakes").'</strong></p>
    <p>' . __("This page is password-protected. Please input password below.") . '</p>
    <center><label for="' . $label . '">' . __("Password:") . '<input name="post_password" id="' . $label . '" type="password" size="40"  style="height:20px;"/></label><input type="image" src="images/btn_member02.png" name="Submit" value="' . esc_attr__("Submit") . '"/></center>
    </form>
    ';
    return $output;
}
add_filter('the_password_form', 'my_password_form');
?>

例如,当我在页面www.mysite.com/memberlogin输入正确的密码时,我应该被重定向到www.mysite.com/memberpage

【问题讨论】:

  • 你的代码会发生什么?表单操作/wp-pass.php 的结果是什么?那应该是你的文件,对吧?
  • 这不是我的文件,它是 wordpress 的。此页面受密码保护,当我输入密码时,它只会重新加载页面内容。我想要做的是输入密码后,它会重定向到不同的页面。
  • wp-pass.php 位于 wordpress 的根文件夹中。

标签: php wordpress redirect passwords


【解决方案1】:

我为您的问题编写了以下代码。 请检查以下可能对您有用的代码(将此代码写在您的functions.php中):-

<?php 

    add_action( 'login_form_postpass', 'redirectPasswordProtectedPage' );
    function redirectPasswordProtectedPage()
    {

        if ( ! empty( $_POST['post_password'] ) ) {
        /** @var wpdb $wpdb */
        global $wpdb;
        $query          = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_password = %s", trim($_POST['post_password']) );
        $password_posts = $wpdb->get_row( $query );

        if ( isset( $password_posts ) ) {

            $post_id   = $password_posts->ID;
            wp_safe_redirect(get_permalink(25));
            exit;
        }
      }
    }  
?>

【讨论】:

  • 请将页面 id 25 更改为您要重定向的页面 id。
  • 您的代码不起作用。它仍然会将我重定向到当前页面而不是另一个页面。
  • wp-pass.php 在 wordpress 的根目录下找到。
  • @MonicaNegapatan 为什么需要 wp-pass.php ?默认情况下,您的受密码保护的页面表单将在表单操作中使用以下 url(当我们使用 wordpress 密码保护的默认功能时):- yoursiteurl/wp-login.php?action=postpass
【解决方案2】:

我找到了一个帖子,忘记复制链接,但这里是代码:

<?php
    echo "<script type='text/javascript'>\nwindow.location = 'http://www.google.com'</script>";
?>

我将该代码放在受密码保护的页面中。输入密码后,它会将我重定向到另一个页面 - 这是我想要它做的。

【讨论】:

    【解决方案3】:

    您的表单操作应该是wp-login.php?action=postpass,而不是wp-pass.php

    来源:Using Password Protection

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2011-06-21
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多