私はユーザ登録とログインを許可するが標準のwp-login.php
などを介さないサイトを持っています - それはすべてテーマと少しのs2member
の中でもされます。
ページキャッシュが有効になっていると、コードにログインボタンまたは「アカウント」ボタンが表示され、キャッシュされた資料が表示されるという問題が発生しています。
正しいユーザーレベルのメンバーがログインしているかどうかに応じて、どのボタンを表示するかを決定するには、以下のコードを使用します。
<?php if (current_user_is("s2member_level1")) : ?>
<?php
$current_user = wp_get_current_user();
$redirect = '&redirect_to='.urlencode(wp_make_link_relative(get_option('siteurl')));
$uri = wp_nonce_url( site_url("wp-login.php?action=logout$redirect", 'login'), 'log-out' );
?>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">My Account</a>
<ul class="dropdown-menu">
<li><a href="<?= $uri; ?>">Logout</a></li>
<li><a href="<?= get_permalink(x); ?>">Edit Account</a></li>
</ul>
</li>
<?php else : ?>
<li class="login-button">
<a class="btn-lg" href="<?= get_permalink(x); ?>">Member Login</a>
</li>
<?php endif; ?>
ただし、ページキャッシュを有効にすると、これにはさまざまな問題があります。
W3TCのFAQセクションにあるFragment Cachingのメモを見ていましたが、大きな失敗があるようです。
WordPressの機能は利用できなくなりますのでご注意ください。
したがって、正しく理解していると、フラグメントキャッシングを使用できなくなります。
メンバーのログイン/アカウントボタンはサイトのメインナビゲーションに常時表示されているので、当面はページキャッシュを完全に無効にしました。
動的セクションを処理するための何らかの形のAJAXアプローチを統合する唯一の選択肢は、auth/guestステータスに依存しますか?
これは機能です。あなたはログインしているユーザーのためにキャッシュを無効にすることを試みることができますが、それがメインナビゲーションにあるならば、これはまだ設定画面によるように役に立たないでしょう:
ログインユーザーのページをキャッシュしない
認証されていないユーザーは、指定されたページの最後に認証されたユーザーのビューのキャッシュされたバージョンを見ることができます。このオプションを無効にすることはお勧めできません。
この問題について、これをさらに解決する可能性のある他の質問もいくつかあります。