SWPM Inhaltsschutz
siehe auch diesen Thread
SWPM (Simple WordPress Membership) bietet die Möglichkeit, Inhalte auf der Basis der Mitgliedsstufe zu schützen, d.h. dass diese erst nach einer Anmeldung angezeigt werden.
Schritt 1
Um das Verhalten und mögliche Probleme im Zusammenspiel mit anderen Plugins zu untersuchen, wurde eine neue WP-Instanz auf meinem Entwicklungssystem eingerichtet, die zunächst nur zwei Plugins enthält:
User Role EditorSimple WordPress Memebership.
Schritt 2
- anlegen einer Kategorie namens
Privat - anlegen einer Benutzerrolle mit dem Namen
Privat(basierend aufAbonnent) und einer Mitgliedschaftsstufe, die dieser entspricht - anlegen eines Benutzers mit dieser Mitgliedschaftsstufe
Kategorie bearbeiten-Diaöog prüfen ⇒ es werden keine Einstellungen für die Zugriffskontrolle (anders als vonSWPMangegeben) angezeigtContent Access Controlfür Kategorien unterSWPMkonfigurieren:- allgemeinen Schutz für die Kategorie
Privataktivieren (sollte Zugriff für nicht eingeloggte Benutzer verhindern) - speziellen Schutz für die Rolle
Privatund die KategoriePrivataktivieren (soll eingeloggten Benutzern, die der MitgliedschaftsstufePrivatzugeordnet sind, den Zugriff ermöglichen)
- einen Beitrag erstellen, der der Kategorie
Privatzugeordnet ist - Zugriff testen:
- nicht eingeloggt: für den privaten Beitrag wird nur die Überschrift und ein Hinweis zum Einloggen angezeigt (O.K.)
- aber: kein Link zum Login (?) ⇒ Link wird nur in der Beitragsansicht angezeigt (Feature, Bug?), nehmen wir es mal als Feature…
- eingeloggt: der ganze Text wird angezeigt (O.K.)
Schritt 3
Publish Press Permissionsinstallieren- Zugriffskontrolle für Kategorie
PrivatsetzenPrivataktiviertAbonnentdeaktiviert{Alle}deaktiviert{Anonymus}deaktiviert{Authenticated}disabled
- Testzugang:
- nicht eingeloggt: privater Beitrag ist nicht gelistet, daher kein Hinweis auf Einloggen (~ O.K.)
- eingeloggt: privater Inhalt wird angezeigt (O.K.)
Schritt 4
Publish Press Permissionsdeaktiviert- Testzugang:
- nicht eingeloggt: es wird nur die Überschrift und ein Hinweis zum Einloggen für den privaten Beitrag angezeigt (O.K.)
- eingeloggt: der gesamte Text wird angezeigt (O.K.)
- ⇒ wie erwartet!
Schritt 5
Publish Press Permissionsgelöscht- Testzugang:
- nicht eingeloggt: es wird nur die Überschrift und ein Hinweis zum Einloggen für den privaten Beitrag angezeigt (O.K.)
- eingeloggt: der gesamte Text wird angezeigt (O.K.)
- ⇒ wie erwartet!
Behebung des Anzeigefehlers (Exzerpt)
WordPress entfernt alle HTML-Tags (also auch Links) bei Anzeige des Exzerpts eines Beitrags, einer Seite usw. (siehe WordPress-Funktion wp_trim_words). Damit verschwinden die Links zur Login- und zur Registrierungs-Seite, sofern SWPM wegen des Zugriffsschutzes den Inhalt nicht anzeigt.
Abhilfe bringt ein Filter (z.B. in der functions.php des Themes), der die Links wieder einbaut:
function swpm_trim_words( $text, $num_words, $more, $original_text ) { $original_text = $text; // check presence of text regarding to 'login' and 'join us' // see /plugins/simple-membership/classes/class.swpm-utils-misc.php $chkMsg = SwpmUtils::_( 'Please' ).' '.SwpmUtils::_( 'Login' ).'. '; $chkMsg .= SwpmUtils::_( 'Not a Member?' ).' '.SwpmUtils::_( 'Join Us' ); $text = str_replace($chkMsg, SwpmMiscUtils::get_login_link(), $text); return $text; }; // add the filter add_filter('wp_trim_words', 'swpm_trim_words', 10, 4);
Der Text, der normalerweise die Links enthält, wird hier wieder durch die variante mit Links ersetzt.
Andere entfernte HTML-Tags bleiben somit unberührt, die generelle Funktion der Auszug-Anzeige, wie sie durch WordPress vorgesehen ist, bleibt erhalten.


