it-swarm.com.de

Wie gehe ich mit is_user_logged_in () mit dem gesamten w3-Cache um?

Ich habe eine Site, die die Registrierung und Anmeldung von Benutzern erlaubt, aber nicht über den Standard-wp-login.php usw. - alles innerhalb des Themas und ein bisschen s2member.

Es sind Probleme aufgetreten, bei denen bei aktiviertem Seiten-Caching in meinem Code entweder eine Anmeldeschaltfläche oder eine Schaltfläche "Ihr Konto" mit zwischengespeichertem Material angezeigt wird.

Mit dem folgenden Code entscheide ich, welche Schaltfläche angezeigt wird, je nachdem, ob das richtige Mitglied auf Benutzerebene angemeldet ist.

<?php if (current_user_is("s2member_level1")) : ?>
    <?php
        $current_user = wp_get_current_user();
        $redirect = '&amp;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; ?>

Bei aktiviertem Seiten-Caching treten jedoch alle möglichen Probleme auf.

Ich habe mir die Fragment-Caching-Notizen im Abschnitt FAQ von W3TC angesehen, aber es sieht so aus, als ob ein schwerwiegender Fehler aufgetreten ist.

Beachten Sie, dass WordPress-Funktionen nicht verfügbar sind.

Wenn ich das richtig verstehe, hindert mich das ziemlich daran, das Fragment-Caching zu verwenden.

Da der Mitglieder-Login/mein Konto-Button in der Site-Hauptnavigation immer vorhanden ist, habe ich das Seiten-Caching vorerst vollständig deaktiviert.

Ist die einzige Möglichkeit für mich, eine Form von AJAX -Ansatz für die Verarbeitung dynamischer Abschnitte zu integrieren, die vom Status der Authentifizierung/des Gasts abhängt?

1
alexleonard

Dies ist eine Funktion. Sie können versuchen, das Zwischenspeichern für angemeldete Benutzer zu deaktivieren. Wenn es sich jedoch in der Hauptnavigation befindet, hilft dies nicht, wie im Einstellungsbildschirm angegeben:

Zwischenspeichern Sie keine Seiten für angemeldete Benutzer

Nicht authentifizierte Benutzer können eine zwischengespeicherte Version der Ansicht des letzten authentifizierten Benutzers einer bestimmten Seite anzeigen. Das Deaktivieren dieser Option wird nicht empfohlen.

Es gibt auch einige andere Fragen zu diesem Thema, die dies weiter klären könnten:

Wird nach dem Abmelden als angemeldet angezeigt (W3 Total Cache-Problem)

https://stackoverflow.com/questions/19441226/w3-total-cache-still-cached-when-user-logging-by-nicety-login

2
kraftner