web-dev-qa-db-fra.com

post_password_required () ne reconnaît pas le cookie défini avec le mot de passe correct

En utilisant le code ci-dessous:

<?php if ( post_password_required() ) { ?>
    <form method="post" action="/wp-pass.php">
        <p>This content is password protected. To view it please enter your password below:</p>
        <input type="password" style="margin:10px 0;" size="20" id="pwbox-<?php the_ID(); ?>" name="post_password"/></label><br/>
        <input type="submit" value="Submit" name="Submit"/></p>
    </form>
<?php } else { ?>
    // echo out all of the post content
<?php } ?>

travaillé pour masquer un contenu spécifique derrière la fonctionnalité protégée par mot de passe Wordpress.

Cependant, cela a cessé de fonctionner. Le cookie est toujours en cours de configuration et je peux le voir dans les paramètres du navigateur, mais la fonction ne reconnaît plus que le cookie correct est présent et recharge simplement la page demandant à nouveau le mot de passe.

Je n'utilise pas beaucoup cette fonctionnalité, il est donc difficile de dire qu'elle a cessé de fonctionner exactement, mais cela pourrait être lié à la mise à niveau de Wordpress vers la version la plus récente. Cela aurait-il du sens?

UPDATE:

Voici le contenu exact du cookie:

Name:   wp-postpass_xxxxxxxxxxxxxxxxxxxxx
Content:    secret
Domain: www.domain.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Monday, June 25, 2012 11:55:26 AM
Expires:    Thursday, July 5, 2012 11:55:25 AM

Comme vous pouvez le constater, le cookie contient le mot de passe correct, mais la fonction a cessé de le reconnaître comme étant correct ou valide.

UPDATE # 2

Suppression de l'URL de test maintenant que la solution a été publiée.

1
Charles

Deviner!

La nouvelle version de WordPress (3.4) a modifié le fonctionnement des pages protégées par mot de passe.

Cela devrait fonctionner pour vous maintenant:

    <?php if ( post_password_required() ) { ?>
    <form method="post" action="/wp-login.php?action=postpass">
        <p>This content is password protected. To view it please enter your password below:</p>
        <input type="password" style="margin:10px 0;" size="20" id="pwbox-<?php the_ID(); ?>" name="post_password"/></label><br/>
        <input type="submit" value="Submit" name="Submit"/></p>
    </form>
<?php } else { ?>
    // echo out all of the post content
<?php } ?>

J'ai remplacé votre ligne "/wp-pass.php" par la nouvelle méthode "wp-login.php? Action = postpass".

6
Drew Baker