Software as a Service, Managed Hosting & Technologie News
  • Deutsch
  •  Blog
  •  Events
  •  Seiten
    •  Mattermost
    •  MediaWiki
    •  Nextcloud
    •  OTRS
    •  TYPO3
    •  WordPress
  •  SaaS Web Home

Facebook App

WordPress: so erstelle ich eine private Homepage für die Familie und den Freundeskreis

Veröffentlicht am 21. Juli 2017 von Matthias Wulkow

Im privaten Umfeld ist es nicht selten, dass man Fotos, Videos und Texte nicht mit jedem teilen möchte.

Aber mit Freunden und Familie möchte man schon Inhalte teilen können, und einfach soll es auch sein (außerdem sollen sie auch keine Berechtigungen bekommen, die Homepage zu verändern)... Viele greifen daher bevorzugt auf Facebook, weil Sie meinen, die Inhalte seien dort privat - nun ja, lassen wir Kommentare hierzu beiseite...

Widmen wir uns einer anderen Option: wir erstellen eine WordPress Homepage, zu der nur registrierte User Zugriff haben. Damit aber nicht jeder Login und Passwort sich merken muss, bieten wir zusätzlich zur Standard-Anmeldung, die Möglichkeit, sich via Facebook Login anzumelden.

Vorgehensweise

Wie erreichen wir unser Ziel?

  • Zugriff einschränken
    • Members Plugin einrichten, um die Rollendefinition von WordPress anzupassen und den Zugang zur Homepage über die Anmeldeseite umzuleiten
    • User Role Editor Plugin installieren, um eine individuelle Capability (Berechtigung) zu erstellen
    • functions.php Datei des Themes anpassen, um die Inhalte der Homepage für Abonnenten zu verbergen
    • Erstellen einer Seite mit Informationen für angemeldete Nutzer, die aber nicht die geeigneten Berechtigungen besitzen
  • Facebook Plugin installieren/konfigurieren, um Facebook-Usern die Möglichkeit zu geben, sich ohne Login/Passwort anzumelden
    • Facebook-App erstellen
    • WordPress Social Plugin einrichten

Zugriff auf Homepage einschränken

Members Plugin einrichten

Das Members Plugin hat für unseren Use-Case 2 Funktionen:

  1. Allgemeinen Zugriff auf die Inhalte unterbinden: Besucher muss angemeldet sein
  2. Neue Rolle "Family & Friends" erstellen: als Admin können wir manuell Abonnenten (die keine Berechtigungen haben) in die neue Rolle umziehen

Wir installieren das Plugin Members und kümmern uns um die Einstellungen davon:

  • Enable Private Site: anhaken - wir möchten, dass nur angemeldete Nutzer die Inhalte sehen können, daher sollen unangemeldete Nutzer auf die Anmelde-Seite umgeleitet werden, egal welche Seite sie ansteuern
  • Disable Feed: anhaken - andere Personen oder Dienste sollen keine Informationen über die Inhalte erhalten

Die anderen voreingestellten Parameter können so bleiben.

Individuelle Capability erstellen

Das Plugin User Role Editor ist ein populäres und kostenfreies Plugin zum Bearbeiten der Nutzer und der Nutzerrollen von WordPress. Für unser Vorhaben erstellen wir eine neue Capability und werden anhand dieser prüfen, ob der Besucher diese Berechtigung hat oder nicht. Die Abfrage ob er berechtigt ist oder nicht folgt im nächsten Absatz zu der functions.php.

Wir erstellen also eine Capability namens oooooxooooo und weisen sie der Rolle "Family & Friends" zu, bzw. auch der Admin-Rolle. Sollten auf der WordPress-Installation auch andere Rollen besetzt sein (Redakteur, ..), dann können Sie die Capability auch diesen Rollen zuweisen. Jedenfalls NICHT der Rolle "Subscriber" (Abonnent) vergeben!

Zusatzeinstellung in der functions.php

Das Members-Plugin ist leider nicht ausreichend für unser Vorhaben bzw. etwas umständlich. Mit dem Members-Plugin wird nämlich nur erzwungen, dass Besucher sich anmelden müssen. Standardmäßig hat aber ein eingeloggter User Zugriff auf alle Inhalte (Seiten / Artikel). Aber selbst wenn man bei allen Seiten und Artikeln, die User-Berechtigungen setzt, bekommt der nicht-autorisierte Besucher z. B. die Artikel-Titel angezeigt, lediglich der Inhalt wird gesperrt.

Das ist nicht was wir haben möchten; wir möchten den Zugriff komplett unterbinden.

Damit nicht-berechtigte Besucher auf eine Seite weitergeleitet werden, auf der z. B. Infos stehen, weshalb der Zugriff verboten ist, fügen wir der functions.php des Themes zusätzlichen Code. Kurze Erklärungen:

  • Jedes Theme hat eine functions.php. Diese zentrale Datei steuert das Verhalten eines Themes und verbindet verschiedene Dateien zusammen
  • Der zusätzliche Code prüft 3 Dinge:
    • ob der Besucher angemeldet ist,
    • ob der Besucher die Capability "oooooxooooo" hat
    • und ob der User bereits auf der Seite "Stop" ist

    Wenn alle drei Bedingungen zutreffen, wird der Besucher auf die Seite "Stop" weitergeleitet, ansonsten kann der Besucher sich die Seiten/Artikel anschauen. Die dritte Bedingung ist deshalb wichtig: wenn man die Seite "Stop" aufruft, darf keine weitere Weiterleitung stattfinden, sonst wandelt sich die Anfrage in eine unendliche Loop.

Code für functions.php

function my_page_template_redirect(){
  if( is_user_logged_in() && ! current_user_can( 'oooooxooooo' ) && ! is_page( 'stop' ) ){
    wp_redirect( home_url( '/stop/' ) );
    exit();
  }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

Code für functions.php bei Multisite

function my_page_template_redirect(){
  global $blog_id;
  if( is_user_logged_in() && ! current_user_can_for_blog( $blog_id, 'oooooxooooo') && ! is_page( 'stop' ) ){
    wp_redirect( home_url( '/stop/' ) );
    exit();
  }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

Seite mit Infos für abgewiesene Nutzer

Besucher, die sich anmelden aber nicht die erforderlichen Berechtigungen haben, sollten nicht einfach eine weiße Seite zu sehen bekommen oder irgendeine Fehlermeldung. Es ist viel besser, diesen Personen eine Seite anzuzeigen, auf der wir angeben, dass Sie keine Berechtigung haben und sich ggf. an den Homepage-Betreiber wenden sollen. Ein zusätzlicher Hinweis für Facebook-User, die das Facebook-Login zum ersten Mal nutzen und deshalb keine Berechtigung haben ist auch sinnvoll.

Facebook Login

Damit man als Homepage-Betreiber nicht all seine Bekannte erstmal anlegen muss - diese würden sich mit Sicherheit schwer tun, die Anmeldedaten zu behalten - installieren wir eine Facebook-Login Funktion. Wie Sie es wahrscheinlich schon mal gesehen haben, gibt es auf der Anmelde-Seite der Homepage neben der Eingabefelder für Benutzername und Passwort, ein Button "Connect with Facebook" oder mit ähnlicher Beschriftung.

Egal welches Facebook Login Plugin verwendet wird, wir benötigen eine Facebook-App, zu der das Plugin eine Verbindung aufnehmen kann, wenn ein Facebook-Nutzer sich anmelden möchte.

Facebook App erstellen

Um eine Facebook-App zu erstellen, meldet man sich hier an: https://developers.facebook.com. Natürlich muss man Facebook-Zugangsdaten haben, sonst muss man sich registrieren.

  • Eine neue App erstellen
  • Anzeigename + kontakt email -> App-ID erstellen
  • Sicherheitskontrolle (Captcha)
  • Einstellungen: Kategorie auswählen, Plattform hinzufügen -> Website -> URL eingeben (ohne slash am Ende) (speichern)
  • App Review öffentlich machen und bestätigen
  • Codes kopieren und in WP einfügen

WordPress Social Login einrichten

Wir verwenden nun als Plugin WordPress Social Login: das Plugin ist kostenfrei und kann sogar mehr als nur Facebook zu verbinden, es kann auch Google, Twitter und viele andere Netzwerk-Zugänge verbinden.

Damit das Plugin tut was wir wollen, müssen wir folgendes einstellen:

  1. Daten aus der Facebook App kopieren und in das Plugin eintragen
  2. Registrierungen und Anmeldungen sollen erlaubt sein
  3. Die sich über Netzwerke verbindenden User erhalten zunächst die Role "Abonnent" (Subscriber) - das ist zwar die Standardgruppe, aber wir legen es zusätzlich fest: sicher ist sicher!

Wenn ein neuer Facebook-User sich registriert, möchten wir auch informiert werden, um die Berechtigungen, zu ändern (oder nicht, wenn es sich nicht um erwünschte Personen handelt). Dazu diese Einstellung vornehmen: Einstellungen > WP Social Login > Widget > Advanced Settings > Notification > "Notify only the blog admin of a new user".

Facebook Apps Daten einfügen

Allgemeine Einstellungen

Berechtigung für neue Anmeldungen

Optional: Admin-Bar entfernen

Wenn man möchte, dass Benutzer aus der Gruppe "Family & Friends" bzw. solche die keine Admins sind (oder Admin-Berechtigungen haben), die Admin-Bar nicht sehen sollen, dann kann man diese entsprechend ausblenden. Dazu wird erneut in der functions.php Code hinzugefügt:
function remove_admin_bar() {
if( ! current_user_can('administrator') && ! is_admin() ){
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'remove_admin_bar');

Achtung: das bedeutet natürlich, dass diese Benutzer nicht ohne Weiteres in ihr Profil gelangen können und entsprechend ihre eigenen Daten nicht bearbeiten können. Dafür können wir aber in einem passenden Menü einen Eintrag hinzufügen z. B. "Profil bearbeiten" der https://meine-website.tld/wp-admin/profile.php verlinkt.

Zusammenfassung

Wir haben eine bestehende Homepage verändert, sodass Inhalte erst nach Anmeldung gesehen werden können - wenn die Berechtigung stimmt.

Die Anmeldung alleine reicht nicht aus, der Besucher darf nicht der Gruppe (Rolle) Abonnent gehören (das ist übrigens die Standard-Rolle, wenn Nutzer angelegt werden) und muss eine Zusatz-Berechtigung oooooxooooo besitzen. Nicht erlaubte Besucher werden auf die Seite "Stop" weitergeleitet.

Zu alledem haben wir einen "Facebook-Connector" eingerichtet: Facebook-User können sich anmelden ohne Login und Passwort einzugeben. Neu angemeldete Facebook-User gehören automatisch der Gruppe Abonnent und dürfen vorerst nichts sehen. Achtung: wenn der Besucher einen Adblocker benutzt, kann es sein, dass die Facebook-Anmeldung fehlschlägt.

Als Administrator werde ich automatisch über Neuregistrierungen informiert: wenn ich den Facebook-User kenne, dann weise ich ihm die Rolle "Family & Friends" zu.

Abgelegt in Content Management System, SaaS Web Info, Technik, Tutorial, Web Application Verschlagwortet mit App ID, Berechtigung, Capability, Facebook App, Facebook Login, functions.php, Hook, Member, Members, Subscriber, User role, User Role Editor, WordPress, WordPress Anmeldung, WordPress Multisite, WordPress Registrierung, WordPress Social Login

Search

Melden Sie sich an und erhalten Sie Nachrichten zu IT Events rund um den Globus und Neuigkeiten zu SaaS Web.

Archive

  • Mai 2024 (1)
  • Juli 2023 (1)
  • März 2023 (1)
  • Januar 2023 (1)
  • Dezember 2022 (2)
  • Oktober 2022 (1)
  • September 2019 (1)
  • Februar 2019 (1)
  • Januar 2019 (1)
  • Dezember 2018 (1)
  • November 2018 (1)
  • Oktober 2018 (1)
  • September 2018 (1)
  • Juni 2018 (1)
  • Mai 2018 (1)
  • April 2018 (2)
  • März 2018 (1)
  • Februar 2018 (3)
  • Januar 2018 (2)
  • Dezember 2017 (2)
  • August 2017 (2)
  • Juli 2017 (4)
  • Juni 2017 (7)
  • Mai 2017 (2)
  • April 2017 (2)
  • März 2017 (1)
  • Februar 2017 (2)
  • Dezember 2016 (3)
  • November 2016 (2)
  • Oktober 2016 (2)
  • September 2016 (2)
  • August 2016 (3)
  • Juli 2016 (6)
  • Juni 2016 (1)
  • April 2016 (2)
  • Februar 2016 (2)
  • Dezember 2015 (3)
  • November 2015 (2)
  • Oktober 2015 (2)
  • September 2015 (1)
  • August 2015 (2)
  • Juni 2015 (3)
  • Mai 2015 (3)
  • April 2015 (4)
  • März 2015 (1)
  • Februar 2015 (1)
  • Januar 2015 (2)
  • Dezember 2014 (3)
  • November 2014 (5)
  • Oktober 2014 (4)
  • September 2014 (2)
  • Juli 2014 (2)
  • Juni 2014 (4)
  • Mai 2014 (2)
  • April 2014 (1)
  • März 2014 (3)
  • Februar 2014 (2)
  • Januar 2014 (2)
  • Dezember 2013 (2)
  • November 2013 (2)
  • September 2013 (2)
  • August 2013 (1)
  • Juli 2013 (2)
  • Juni 2013 (2)
  • Mai 2013 (1)
  • April 2013 (3)
  • März 2013 (2)
  • Februar 2013 (1)
  • Januar 2013 (1)
  • November 2012 (2)
  • Oktober 2012 (1)
  • August 2012 (2)
  • Juli 2012 (1)
  • Juni 2012 (4)
  • Mai 2012 (6)
  • April 2012 (4)
  • März 2012 (4)
  • Februar 2012 (6)
  • Januar 2012 (3)
  • Dezember 2011 (11)
  • November 2011 (6)
  • August 2011 (4)
  • Juli 2011 (2)
  • Juni 2011 (5)
  • Mai 2011 (4)
  • April 2011 (1)

SaaS-Hosting

  • Websites & Blogs
  • Portale & Communities
  • E-Business
  • Office
  • Development

Unternehmen

  • Partner
  • Referenzen
  • Kontakt
  • Häufige Fragen
  • AGB
  • Cookies verwalten
  • Datenschutz
  • Impressum

SaaS Web Internet Solutions GmbH

Steinstraße 25 | 76133 Karlsruhe
Fon 0721 180 3951-0 | Fax 0721 180 3951-9
E-Mail info@saasweb.net

Xing Twitter E-Mail Blog

SaaS Web Internet Solutions GmbH © 2017