2011-02-04 17 views
3

パスワードで保護されたページにログインすると、WordPressはwp-postpass_ ハッシュのようなクッキーを設定します。WordPress保護ページパスワードCookie

このCookieは永遠に残っているようです。私は、ユーザーに 'ログアウト'リンクを提供できるようにしたいと思います。私がハッシュを知らないと、この特定のクッキーを見つけて削除する方法がありますか?多分、「wp-postpass」に基づいてそれを見つけることによってクッキーを入手する方法がありますか?

私は、WordPressのコアファイルを変更してクッキーの有効期限を変更するための他の解決策を見てきましたが、更新があってもこれは持続しません。この特定のクッキーの有効期限を変更するために書くことができる機能があるのでしょうか?

ヒント?ありがとう!

答えて

1
<?php 
$pass_cookie=''; 
foreach($_COOKIE as $key=>$value){ 
    if(!strncmp($key,"wp-postpass_",12)){ 
    $pass_cookie = $key; 
    break; 
    } 
} 
if($pass_cookie){ 
    setcookie($pass_cookie,'',0); 
} 
?> 

私はむしろ、上記のようなものを使用します - それはあなたがハッシュを知っていない場合は大丈夫だwp_postpassクッキー

0

あなた自身でプログラミングするのではなく、wp_logout_url()へのリンクをユーザーに提供しようとしましたか?

+4

wp_logout_url()は登録ユーザーをログアウトするためのものです。私はクッキーベースのパスワード保護されたページを指しています。 – HWD

0

私はこれをやってしまった:

<?php 
// turn all cookies into string 
$cookie_string = implode(array_keys($_COOKIE)); 
// find position of desired cookie 
$pos = strpos($cookie_string,'wp-postpass'); 
// extract string starting at $pos 
$pass_cookie = substr($cookie_string,$pos); 
// set cookie to expire on browser close 
setcookie($pass_cookie,'',0); 
?> 

これはおそらく、それが配列の最後であることをWP-postpassクッキーを必要とし、特にので、最もエレガントなソリューションではありません。

3

の位置に依存しません。実際には、CookieハッシュはブログのURLのMD5です。サイトのCookieハッシュを知りたい場合は、次のようにしてください:

<?php 

    $url="http://www.your-blog.com"; 
    $COOKIEHASH = md5($url); 

    //Now, your cookie will be, 
    echo 'wp-postpass_' . $COOKIEHASH; // Name of the cookie of your blog 

    //Now, you can delete it whenever you want. :) 

    //setting your cookie 
    //setcookie('wp-postpass_' . $COOKIEHASH, $password, time() + 864000, COOKIEPATH); 
?> 
+0

'get_bloginfo( 'url');' – testing

関連する問題