Wordpress保护的帖子提供了一个找不到的页面'和' wp-pass.php'网址

时间:2015-02-02 21:29:21

标签: wordpress function password-protection

我尝试使用我的functions.php中的以下代码在Wordpress中设置受密码保护的帖子的样式。它给了我一个找不到的页面'并重定向到' wp-pass.php'网址。关于如何绕过它的任何想法都将非常感激。

<?php add_filter( 'the_password_form', 'custom_password_form' );
function custom_password_form() {
    global $post;
    $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
    $o = '<form class="protected-post-form" action="' . get_option('siteurl') . '/wp-pass.php" method="post">
    ' . __( "" ) . '
    <label for="' . $label . '">' . __( "Password Protected" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
    </form>
    ';
    return $o;
}
?>

2 个答案:

答案 0 :(得分:5)

自定义密码保护页面的正确方法是

<?php
    function my_password_form() {
        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 this protected post, enter the password below:" ) . '
        <label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
        </form>
        ';
        return $o;
    }
    add_filter( 'the_password_form', 'my_password_form' );
    ?>

来源:http://codex.wordpress.org/Using_Password_Protection#Customize_the_Protected_Text

答案 1 :(得分:2)

您在表格url的行动中写错了get_option('siteurl') . '/wp-pass.php。因此,在提交密码后,您将被重定向到wp-pass.php。所以你的代码应该是:

function custom_password_form() {
    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 this protected post, enter the password below:" ) . '
    <label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
    </form>
    ';
    return $o;
}
add_filter( 'the_password_form', 'custom_password_form' );