de.hideout-lastation.com
Paradies Für Designer Und Entwickler


Wie man den Inhalt auf registrierte Benutzer beschränkt [WP Plugin Tutorial]

In letzter Zeit haben die meisten Online-Nachrichten- und Informationsveröffentlichungs-Websites das Freemium-Modell angenommen, wonach Leser, die kein registriertes Mitglied sind, auf eine bestimmte Anzahl von Artikeln beschränkt sind, die sie lesen können; zahlende, registrierte Nutzer hingegen haben unbeschränkten Zugriff auf Artikel.

In diesem Artikel zeigen wir Ihnen, wie Sie ein einfaches Plugin erstellen, das dem Administrator einer WordPress-Website die Möglichkeit gibt, bestimmte Posts, Seiten und Teile eines Post-Contents auf registrierte Benutzer zu beschränken.

Codierung des Plugins

Beim Schreiben eines WordPress-Plugins enthält der Header (ein PHP-Kommentarblock) Informationen wie Name, Beschreibung, Autor und Autor-URL des Plugins. Hier ist der Plugin-Header:

Das Plugin wird eine Einstellungsseite haben, die aus einem Formularfeld besteht, das die zu beschränkenden Post- oder Seiten-IDs enthält.

Der folgende Code fügt ein Untermenü zu den Einstellungen hinzu, die den Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Hinzufügen des Untermenüs zur Einstellungsfunktion rcru_plugin_menu () {add_options_page ('Inhalt auf registrierten Benutzer beschränken', 'Inhalt auf registrierte Benutzer beschränken', 'manage_options', 'rcru-restricte-content-user', 'rcru_content_user_settings'); } 

Das fünfte Argument rcru_content_user_settings das an add_options_page ist die Funktion, die den Inhalt für die Plugin-Einstellungen ausgibt.

 Funktion rcru_content_user_settings () {echo ' 
'; screen_icon (); Echo '

Beschränken Sie Inhalte auf registrierte Benutzer

'; Echo '
'; do_settings_sections ('rcru-restricte-content-user'); settings_fields ('rcru_settings_group'); submit_button (); }

Der Form fehlt die Feld und es ist noch nicht in der Lage, Daten in der Datenbank zu speichern, weil wir noch die WordPress-Einstellungs-API implementieren müssen.

Die Funktion plugin_option definiert den Einstellungsbereich und das Feld.

 // Plugin-Feld und Sektionen Funktion plugin_option () {add_settings_section ('rcru_settings_section', 'Plugin-Optionen', null, 'rcru-restrict-content-user'); add_settings_field ('post-page-id', '  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // Einstellungen registrieren register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

post_page_field, das dritte Argument post_page_field das an die add_settings_field Funktion post_page_field übergeben wurde, wird aufgerufen, um das Formular zu add_settings_field Feld.

 Funktion post_page_field () {echo "Geben Sie die Post oder die Seiten-ID durch Komma getrennt ein."; Echo '  '; } 

Die Funktion plugin_option wird schließlich an die Aktion admin_init, um sie in Aktion zu setzen.

 add_action ('admin_init', 'plugin_option'); 

Wir sind fertig mit dem Erstellen der Seite mit den Plugin-Einstellungen, aber welche Daten werden auf der Einstellungsseite in der Datenbank gespeichert, wenn sie nicht verwendet werden?

Als nächstes folgt die Codierung der Funktion restrict_content_register_user, die die Post- oder Seiten-ID abruft, die auf nur registrierte Benutzer beschränkt ist (die in der Datenbank auf der Einstellungsseite des Plugins gespeichert wurde). Dies stellt sicher, dass der aktuelle Benutzer, der den Beitrag anzeigt, registriert ist; Andernfalls wird eine Fehlermeldung angezeigt, die den Benutzer zur Registrierung auffordert.

Abschließend wird die Funktion an den content_filter angehängt, um die Änderung des Posts oder der Seite zu beeinflussen.

 Funktion restrict_content_register_user ($ content) {global $ post; $ post_database = get_option ('rcru_post-id-option'); $ post_database = explode (', ', $ post_database); $ current_user = wp_get_current_user (); / * Wenn kein Inhalt vorhanden ist, kehren Sie zurück. * / if (is_null ($ content)) gibt $ content zurück; foreach ($ post_database als $ posts) {$ posts = trim ($ posts); if ($ posts == $ post -> ID) {if (benutzername_exists ($ current_user -> user_login)) {/ * Gibt den privaten Inhalt zurück. * / return $ Inhalt; } else {/ * Gibt eine alternative Nachricht zurück. */ Rückkehr ' 
Sie müssen ein registrierter Benutzer sein, um diesen Inhalt lesen zu können.
'; }}} gib $ content zurück; } add_filter ('the_content', 'restrict_content_register_user');

Wir sind nun fertig mit der ersten Möglichkeit, wie das Plugin funktioniert: die Verwendung der Plugin-Einstellungsseite.

Was übrig bleibt, ist das Hinzufügen der Metabox- und Shortcode-Funktion zum Plugin.

Hinzufügen von Metabox

Das Hinzufügen einer Metabox, die ein Kontrollkästchen in Post- und Seitenbearbeitungsbildschirmen enthält, ermöglicht die Beschränkung dieses Posts oder dieser Seite auf registrierte Benutzer, wenn das Kontrollkästchen aktiviert ist. Die Funktion rcru_mb_create enthält die Meta-Box in allen add_meta_boxes und Seiten, wenn sie an die Aktion add_meta_boxes .

 Funktion rcru_mb_create () {/ ** * @array $ screens Bildschirm zum Anzeigen der Meta-Box schreiben * @values ​​Beitrag, Seite, Dashboard, Link, Anhang, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ screens als $ screen) {add_meta_box ('rcru-meta', 'Post / Seite beschränken', 'rcru_mb_function', $ screen, 'normal', 'hoch'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

Die Funktion rcru_mb_function enthält das Kontrollkästchen und die Beschreibung der Metabox.

 Funktion rcru_mb_function ($ post) {// die Metadatenwerte abfragen, wenn sie existieren $ restrict_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Fügen Sie ein Nonce-Feld hinzu, damit wir es später überprüfen können, wenn wir wp_nonce_field validieren ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); Echo ' 
Wenn Sie diese Einstellung überprüfen, wird dieser Beitrag auf nur registrierte Benutzer beschränkt.
'; }

Die Funktion rcru_mb_save_data übernimmt die Sicherheitsprüfung und das Speichern der Formularwerte in der Datenbank.

 Funktion rcru_mb_save_data ($ post_id) {/ * * Wir müssen bestätigen, dass dies von unserem Bildschirm und mit der entsprechenden Autorisierung * erfolgte, da save_post zu anderen Zeiten ausgelöst werden kann. * / // Prüfe, ob unser Nonce gesetzt ist. if (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) gibt $ post_id zurück; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Überprüfen Sie, ob die Nonce gültig ist. if (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) gibt $ post_id zurück; // Wenn es sich um ein automatisches Speichern handelt, wurde unser Formular nicht gesendet. Daher möchten wir nichts tun. if (definiert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) gibt $ post_id zurück; // Überprüfen Sie die Berechtigungen des Benutzers. if ('page' == $ _POST ['post_type']) {if (! aktueller_benutzer_can ('edit_page', $ post_id)) return $ post_id; } else {if (! aktueller_benutzer_can ('edit_post', $ post_id)) gibt $ post_id zurück; } / * OK, es ist sicher für uns, die Daten jetzt zu speichern. * / // Wenn alte Einträge vorhanden sind, rufen Sie sie ab. $ Old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Sanitize Benutzereingaben. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Aktualisieren Sie das Meta-Feld in der Datenbank. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook um die Meta-Box-Daten zu speichern add_action ('save_post', 'rcru_mb_save_data'); 

Die Funktion restrict_content_metabox untersucht einen gegebenen Post oder eine Seite, um zu sehen, ob sie Einschränkungen aufweist, prüft, ob der Benutzer, der den Post liest, registriert ist und zeigt eine Meldung an, die den Benutzer anweist, sich zu registrieren.

 Funktion restrict_content_metabox ($ content) {global $ post; // die Metadatenwerte abrufen, wenn sie existieren $ post_restricted = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Wenn der Post oder die Seite eine Einschränkung hat und der Benutzer nicht registriert ist, // zeige den Fehlerhinweis if ($ post_restricted == 1 && (! Benutzername_exists (wp_get_current_user () -> user_login))) {return ' 
Sie müssen ein registrierter Benutzer sein, um diesen Inhalt lesen zu können.
'; } Rückgabe $ Inhalt; } // hake die Funktion an den Post-Inhalt, um die Änderung zu bewirken add_filter ('the_content', 'restrict_content_metabox');

Hinzufügen des Kurzwahlcodes

Mit dem Shortcode kann ein Teil eines Beitrags auf nur registrierte Benutzer beschränkt werden.

Die Funktion rcru_user_shortcodes enthält die Shortcode-Hook-Funktion add_shortcode, die das [rcru-private] Tag [rcru-private] . Das zweite an add_shortcode Argument ist die Callback-Funktion, die aufgerufen wird, wenn der Shortcode verwendet wird.

 / * Funktion zum Registrieren des Shortcodes. * / function rcru_user_shortcodes () {/ * Fügt den [rcru-private] Shortcode hinzu. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

Die Funktion wird dann in der init Aktion registriert, so dass sie von WordPress-Interna erkannt wird.

 / * Registrieren Sie Shortcodes in 'init'. * / add_action ('init', 'rcru_user_shortcodes'); 

Schließlich behandelt die Callback-Funktion rcru_shortcode die rcru_shortcode Ausgabe.

 / * Funktion zur Handhabung der Shortcode-Ausgabe. * / function rcru_shortcode ($ attr, $ content = '') {/ * Prüfe, ob der aktuelle Benutzer die 'read_private_content'-Fähigkeit besitzt. * / $ current_reader = wp_get_current_user (); if (! username_exists ($ current_reader -> user_login)) {/ * Gibt eine alternative Nachricht zurück. */ Rückkehr ' 
Sie müssen ein registrierter Benutzer sein, um diesen Inhalt lesen zu können.
'; }}

Wie funktioniert das Plugin?

Das Plugin wird eine Einstellungsseite mit einem Formularfeld haben, das Post- und Seiten-IDs akzeptiert, die durch ein Komma begrenzt werden sollen.

Um einen bestimmten Beitrag oder eine bestimmte Seite einzuschränken, geben Sie ihre jeweiligen IDs ein, getrennt durch ein Komma (, ) in der Formularfeld. Um die ID eines Posts zu erhalten, gehen Sie zum Post Edit-Bildschirm (TinyMCE-Editor zum Schreiben von Post-Inhalt) und schauen Sie sich die URL der Seite an. Die an ?post= angehängte Nummer ist die Post-ID.

Zum Beispiel ist für http://wordpress.dev/wp-admin/post.php?post=88&action=edit die Nummer 88 die Post- oder Seiten-ID.

Metabox im Post & Page Bearbeitungsbildschirm

Ein Post oder eine Seite kann auch auf registrierte Benutzer beschränkt werden, indem Sie das Kontrollkästchen Inhalt einschränken in der Metabox aktivieren (vom Plugin zum Post- Bearbeitungsbildschirm hinzugefügt).

Kurzwahl

Der Teil oder der Bereich eines Beitrags oder Seiteninhalts kann aus der öffentlichen Ansicht ausgeblendet werden und nur registrierten Mitgliedern angezeigt werden, wenn ein solcher Plugin-Shortcode verwendet wird:

 [rcru-private] Teil des Post- oder Seiteninhalts, der nur für registrierte Benutzer gilt. [/ rcru-private] 

Schließlich, hier ist ein Link zu der Plugin-Datei. Fühlen Sie sich frei, den Code und die glückliche Kodierung zu erforschen!

Anmerkung der Redaktion : Dieser Beitrag wurde von Collins Agbonghama für Hongkiat.com geschrieben. Agbonghama ist ein Webentwickler bei Tag und freier Schriftsteller / Blogger bei Nacht. Wenn er nicht mit Code streitet, schläft er gern auf der Couch und schreibt auf seinem persönlichen Blog w3guy.com. Sie können ihn auf Facebook und G + finden.

Mit Snapchat Stories können Sie jetzt über 1 Million kuratierte Storys durchsuchen

Mit Snapchat Stories können Sie jetzt über 1 Million kuratierte Storys durchsuchen

In letzter Zeit waren viele soziale Netzwerkdienste damit beschäftigt, sich gegenseitig Merkmale zu "entleihen" . Snapchat wäre wahrscheinlich mit einem solchen Vorfall vertraut, da sein Stories-Feature seither seine Konkurrenten dazu inspiriert hat, funktional identische Merkmale in ihre Dienste einzuführen .Da

(Tech- und Design-Tipps)

Tiny Hands - The Free Font inspiriert von Donald Trumps Handschrift

Tiny Hands - The Free Font inspiriert von Donald Trumps Handschrift

Anfang dieses Jahres hat eine Gruppe von Programmierstudenten Trump Script geschrieben, was ein Versuch ist, Donald Trumps Präsidentschaftskampagne zu satiren. Heute hat sich Buzzfeed entschieden, mitzumachen. Font Bureau Grafikdesigner Mark Davis hat eine kostenlose Schriftart entwickelt, die von der Handschrift des Donald inspiriert ist.

(Tech- und Design-Tipps)