2017-02-06 12 views
0

私はサードパーティのサービスによって管理されるログインを持つワードプレスサイトを持っています。このサービスによってユーザーがログインすると、Cookieが設定されます。クッキーが設定されているときにWPスーパーキャッシュを無効にする

ユーザーがログインしているとき(Cookieセット)、WPスーパーキャッシュを使用してページをキャッシュしないようにします。 define( 'DONOTCACHEPAGE'、TRUE)を使うことができます。サードパーティのクッキーが設定されている場合、これをどのように早期に(できればfunctions.phpで)設定するのですか?

私は 'init'フックを試しましたが、これはキャッシュされたページでは呼び出されません(これは.htmlから直接ロードされたものと仮定しています)。

function disable_super_cache() { 
    die("Cookie Logic"); 
    //define(‘DONOTCACHEPAGE’, TRUE); 
} 

add_action('init', 'disable_super_cache', 9999); 

これをどのように早期に設定すればよいですか?

UPDATE

私は私が間違って角度からこれを見ていたが実現。できるだけ早く設定する必要があるため、定数をアクションとして設定する必要はありません。 wp-config.php(スーパー・キャッシュはroot functions.phpのロジックよりも前に呼ばれています)では、私が現時点で最もよく働いている作業は次のとおりです。しかし、これは大規模な回避策のように思える、より良い提案が歓迎されるだろう。

/** 
* Disable WP Super Cache when a user is logged in 
*/ 

if(isset($_COOKIE['LoggedInCookie'])){ 
    $_GET['donotcachepage'] = '{secret}'; 
    //define('DONOTCACHEPAGE', 1) // Doesn't stop caching even in wp-config.php, bug in WP-Super-Cache??; 
} 
+0

APIを使い、まだすべてのアクションを確認しましたか? https://codex.wordpress.org/Plugin_API/Action_Reference –

+0

@PeterFeatherstoneええ私はちょうど 'init'と運の上にそれらのすべてを試しました。私はしようとする可能性があると思う 'wp-cache-config.php'関数を追加する編集... – alexmcfarlane

答えて

1

OKしばらくたって、私はここで答えを得るつもりだということは思えないので、私はそれが私が取得することができたほど近くに掲示するのがベストだろうと思いました。私は2つのソリューションを持っていますが、私の質問には直接答えますが、ちょっとハッキリしていて、もう1つはより有効な回避策です。

理想的には、ページがすでにキャッシュされている場合でも、キャッシュを停止する定数/変数が存在する必要があります。 'DONOTCACHEPAGE'は、すでにキャッシュされていない場合にのみキャッシュされているページを停止します。 (質問から)

SOLUTION 1

これは、手動で$ _GET [ 'donotcachepage']変数を強制します。これはちょっとハッキリしているようですが、うまくいきます。

/** 
* Disable WP Super Cache when a user is logged in 
*/ 

if(isset($_COOKIE['LoggedInCookie'])){ 
    $_GET['donotcachepage'] = '{secret}'; 
    //define('DONOTCACHEPAGE', 1) // Doesn't stop caching even in wp-config.php, bug in WP-Super-Cache??; 
} 

SOLUTION 2

WPスーパーキャッシュ高度な設定の中で、「既知のユーザーのためのキャッシュ・ページをしないでくださいと呼ばれる設定があります。 (推奨)」を選択します。基本的には、ユーザーがWordPressにログインしたときにキャッシュを停止します。

ユーザーがWordPressを使用してログインすると、 'wordpress_logged_in_ {hash}'というCookieが設定されます。私のアプリはWordPressにユーザーを記録しないので、同じような名前のクッキーを設定することで同じ効果を作り出すことができます。私の場合、 'wordpress_logged_in_nocache'を設定します。これはWPスーパーキャッシュを偽ってユーザーがログインしていると思ってしまうので、上記の設定を有効にしてもページがキャッシュされなくなります。

第2の解決策は実際には私の質問に直接答えませんが、上記のようにクッキーを変更すると同じ結果が得られます。ソリューション2は、私にとって少し安定しているように感じます。だから私はそれをお勧めします。

関連する問題