Ich habe das nicht geprüft, weil ich The Events Calendar noch nie eingesetzt habe, aber du kannst mit ein paar Zeilen Code nicht angemeldete Benutzer bei Aufruf einer bestimmten Seite auf eine andere Seite weiterleiten, sinngemäß sowas wie
add_action( 'template_redirect', 'redirect_if_user_not_logged_in' );
function redirect_if_user_not_logged_in() {
if( is_page( 'events' ) && ! is_user_logged_in() ) {
wp_redirect( home_url() );
exit;
}
}
Thread-Starter
Thobie
(@thobie)
Danke, Bego, ich teste diese Umleitung nachher mal. Funktioniert dies denn grundsätzlich, damit die beiden genannten Permalinks auch definitiv geschützt sind? Oder sind die beiden Permalinks definitiv ein Einfalltor für Hacker?
Kannst Du mir auch noch sagen, in welcher php-Datei dieser Code eingefügt werden muss?
Wie gesagt: ich nutze The Events Calendar nicht.
Die Weiterleitung sollte aber „grundsätzlich“ funktionieren, wenn
a) die Seite „events“ aufgerufen wird und
b) der Benutzer nicht angemeldet ist (auch nicht als Abonnent).
Kannst Du mir auch noch sagen, in welcher php-Datei dieser Code eingefügt werden muss?
Ich dachte du kennst dich so weit aus?
Du kannst die Funktion in der functions.php
eines Child-Themes anhängen, ein eigenes Plugin schreiben oder Code Snippets verwenden.
Thread-Starter
Thobie
(@thobie)
Moin, Moin, Bego,
Dein Code funktioniert nicht. Ich habe ihn in Code Snippets eingegeben und gespeichert. Dennoch gelange ich mit dem Permalink auf die Seite der Events, also nicht auf die Startseite der Website. Ich habe dies extra in einem zweiten Browser durchgeführt, in dem ich nicht auf der Website angemeldet war.
Ich habe noch zwei weitere Frage dazu.
1) Kann ich den Terminus home_url, der auf die Startseite führt, durch eine beliebige URL einer Seite austauschen, auf der der Besucher mitgeteilt bekommt, er müsse sich vor dem Zugang zu der Seite Events erst anmelden?
2) Kann ich Deinen Code, so er denn funktioniert, duplizieren und ebenfalls in Code Snippet eingeben, da ich auch den Permalink der einzigen Veranstaltung SingleEvent, also nicht den der Übersicht, schützen will? Ich bekomme dabei nämlich eine Fehlermeldung.
Dein Code funktioniert nicht. Ich habe ihn in Code Snippets eingegeben und gespeichert. Dennoch gelange ich mit dem Permalink auf die Seite der Events, also nicht auf die Startseite der Website. Ich habe dies extra in einem zweiten Browser durchgeführt, in dem ich nicht auf der Website angemeldet war.
So? Hat die Seite denn einen Slug events
? (Slug bezeichnet die Titelform in der URL, bei https://example.com/events
ist das events
.)
Kann ich den Terminus home_url, der auf die Startseite führt, durch eine beliebige URL einer Seite austauschen …
Ja. https://developer.wordpress.org/reference/functions/wp_redirect/#comment-409
Kann ich Deinen Code, so er denn funktioniert, duplizieren und ebenfalls in Code Snippet eingeben, da ich auch den Permalink der einzigen Veranstaltung SingleEvent, also nicht den der Übersicht, schützen will?
Die Funktion is_page( 'events
)prüft, ob eine Seite
https://example.com/eventsaufgerufen wird und gibt dann
truezurück. Möchtest du prüfen, ob die Seite mit der ID 42, dem Seitennamen
eventsoder dem Titel
Rolling Stonesabgerufen wird, kannst du
is_page( array( 42, ‚events‘, ‚Rolling Stones‘ ) );` verwenden. (vgl. https://developer.wordpress.org/reference/functions/is_page/#comment-370)
Thread-Starter
Thobie
(@thobie)
Die Seite hat den Slug /events, die restlichen Seiten /event/einzelneveranstaltung_1 usw.
Ich habe jetzt festgestellt, dass die Seite events eine Archivseite ist, die nicht editierbar ist. Gibt es da mit dem Script Probleme?
Thread-Starter
Thobie
(@thobie)
Ich denke, ich habe das Problem anders gelöst. Im Forum des Plugins für den Mitgliederbereich wurden mir zwei Addons empfohlen. Eines mit Full Page Protection und eines mit Customer Messages. Das erstere lässt angemeldete Mitglieder auf die Veranstaltungsseiten, blockiert jedoch die Permalinks eines anonymen Besuchers der Website. Und mit dem zweiten kann ich die Fehlermeldung dabei anpassen. Aber dennoch Danke für Eure Hilfe.