duanhe3393
2014-06-23 07:46
浏览 43
已采纳

WordPress:密码保护页面

I need help with regards to WordPress Password Protect page/s.

After inputting a password, you are usually redirected to the same page where you entered or just showing you the content after inputting password.

What I want is that, after I input the correct password, it redirects to another page of my site. How is that possible? As much as possible, I won't be using any plugins.

Below is my code for 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');
?>

As an example, when I input the correct password on page www.mysite.com/memberlogin, I should be redirected to www.mysite.com/memberpage.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douwen5741 2014-10-09 08:35
    已采纳

    I found a thread and forgot to copy the link but here is the code:

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

    I placed that code in my password protected page. After inputting the password, it redirects me to another page - which what I wanted it to do.

    点赞 打赏 评论
  • duanfuxing2212 2014-06-23 13:42

    I have write the following code for your problem. Please check the following code which may useful for you ( Write this code in your 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;
            }
          }
        }  
    ?>
    
    点赞 打赏 评论
  • dszsajhd237437 2016-10-04 21:24

    Your form action should be wp-login.php?action=postpass, not wp-pass.php

    Source: Using Password Protection

    点赞 打赏 评论

相关推荐 更多相似问题