In diesem Lernprogramm werde ich erläutern, wie ein Syndicator oder eine Ping-Site mithilfe der WordPress-Funktion erstellt wird. Diese Funktion kann für Besitzer hilfreich sein, die ein Artikelverzeichnis erstellen möchten, in dem die Benutzer Artikel über RSS an ihre Website senden können. Um einen Überblick darüber zu geben, wie eine solche Site aussehen kann, habe ich eine Demo-RSS-Site für dieses Tutorial eingerichtet. Jetzt fangen wir an.
Zuerst müssen wir einen Ort einrichten, an dem Benutzer ihre RSS-Feeds hinzufügen können. Zunächst dachte ich, es wäre ausreichend, wenn Sie das vorhandene WordPress-Benutzerprofil verwenden. Wenn Sie jedoch mehrere Web-Einreichungen zulassen möchten, kann dies problematisch sein. Wir richten einen neuen benutzerdefinierten Beitragstyp ein, um die URL für den RSS-Feed des Benutzers zu behandeln. Weitere Informationen zu benutzerdefinierten Beitragstypen finden Sie im Artikel Benutzerdefinierte Beitragstyp-Hilfsklasse.
Wir benötigen nur 2 Felder für den benutzerdefinierten Beitragstyp, einen Titel und einen Ort zum Hinzufügen der URL (Ich verwende die Spalte mit dem Auszug, um alles einfach zu halten)
/ * Neuer benutzerdefinierter Beitragstyp für die neue RSS-Verarbeitung. * / add_action ('init', 'create_rss_feed_uri'); Funktion create_rss_feed_uri () $ labels = array ('name' => _x ('RSS', 'All RSS'), 'singular_name' => _x ('RSS', 'einzelnes Element für rss'), 'add_new' => _x ('Neues RSS hinzufügen', 'rss'), 'add_new_item' => __ ('Neues RSS hinzufügen'), 'edit_item' => __ ('RSS bearbeiten'), 'neues_item' => __ (' Neue RSS '),' view_item '=> __ (' View RSS '),' search_items '=> __ (' RSS durchsuchen '),' not_found '=> __ (' Nichts gefunden '),' not_found_in_trash '=> __ ('Nichts im Papierkorb gefunden'), 'parent_item_colon' => "); $ menu_args = array ('labels' => $ labels, 'label' => __ ('RSS'), 'singular_label' => __ (' RSS '),' public '=> true,' show_ui '=> true,' Capability_type '=>' post ',' hierarchisch '=> false,' revisions '=> true,' rewrite '=> true' wird unterstützt '=> array (' title ',' excerpt ')); register_post_type (' rss ', $ menu_args);
Speichern Sie den folgenden Code in einer neuen Datei (rss_feed_functions.php) und laden Sie es in den folgenden Ordner hoch / wp-content / mu-plugins /. Die Funktion wird geladen, ohne dass sie wie ein normales Plugin aktiviert werden muss.
Nachdem wir unseren benutzerdefinierten Beitragstyp eingerichtet haben, um die RSS-URL beizubehalten, müssen wir eine Seite einrichten, auf der ein Benutzer seine URL senden kann. Die folgende Funktion erstellt ein Formular, das Sie mit dem im Code definierten Shortcode in jede Seite einfügen können.
Wir benötigen ein Eingabefeld, damit ein Benutzer einen Titel und eine URL für den RSS hinzufügen kann.
Als Nächstes müssen wir das Formular bearbeiten, sobald es veröffentlicht wurde. Mit dem folgenden Code können wir die Abfrage vorbereiten, um die Daten in unsere Website einzufügen.
/ * Rss-Daten vorbereiten und verarbeiten * / $ newrss_post = array ('post_title' => $ _POST ["rss_title"], 'post_excerpt' => $ _POST ["rss_uri"]], 'post_author' => $ current_user-> ID, 'post_status' => 'publish', 'post_type' => "rss"); $ post_id = wp_insert_post ($ newrss_post);
Bevor wir jedoch alle Daten, die wir aus dem Formular erhalten haben, einfügen, möchten wir zunächst die Feed-URL und den Titel überprüfen. Zur einfachen Überprüfung der Feed-URL verwenden wir die folgende WordPress-Funktion, um zu überprüfen, ob die Feed-URL einen gültigen Inhalt zurückgibt.
include_once (ABSPATH. WPINC. '/feed.php'); / * validiere Feed URL * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); if (! is_wp_error ($ rss)): / * RSS-Inhalt vorbereiten * / $ newrss_post = array ('post_title' => esc_html ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri.) "]), 'post_author' => $ current_user-> ID, 'post_status' => 'publish', 'post_type' =>" rss "); / * rss-Details in die Datenbank einfügen * / $ post_id = wp_insert_post ($ newrss_post); else: echo "Fehler beim Validieren Ihres RSS-Feeds. Bitte versuchen Sie es erneut."; endif;
Wenn alles gut funktioniert, fügen wir die Feeddaten in die Datenbank ein. Die vollständige Funktion mit der Shortcode-Funktion sieht wie der unten abgebildete Code aus. Wir können die vollständige Funktion in unsere einfügen rss_feed_functions.php Datei.
add_shortcode ('rss_form_submit', 'create_rss_feed_form'); / * Formular zum Übermitteln einer neuen RSS-URL * / Funktion create_rss_feed_form () echo ''; if (isset ($ _ POST ["rss_title"])): / * Feed-URL validieren * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); if (! is_wp_error ($ rss)): / * RSS-Inhalt vorbereiten * / $ newrss_post = array ('post_title' => esc_html ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri.) "]), 'post_author' => $ current_user-> ID, 'post_status' => 'publish', 'post_type' =>" rss "); / * rss-Details in die Datenbank einfügen * / $ post_id = wp_insert_post ($ newrss_post); Echo "RSS wurde erfolgreich übermittelt"; else: echo "Fehler beim Validieren Ihres RSS-Feeds. Bitte versuchen Sie es erneut."; endif; endif;
Jetzt können wir den Kurzcode verwenden [rss_form_submit]
In einer unserer Seiten können Sie das Formular an das Design Ihrer Website anpassen. Möglicherweise möchten Sie nur einem registrierten Benutzer erlauben, diese Seite anzuzeigen und zu verwenden.
Da wir bereits die Feed-URL in unserer Datenbank haben, möchten wir als Nächstes den Artikel verarbeiten, den Benutzer an unsere Ping-Site übermitteln möchten. Dazu benötigen wir eine neue Seite. Um sicherzustellen, dass die Funktion für alle Themen verwendet werden kann, verwenden wir dieselbe Vorgehensweise wie die Feed-URL-Übermittlung für die Artikelübermittlung, wobei eine Funktion mit Shortcode verwendet wird.
Zunächst müssen wir den Feed vom aktuellen Benutzer lesen.
global $ current_user, $ wpdb; get_currentuserinfo (); / * Benutzerdefinierte Abfrage, um den benutzerdefinierten Beitragstyp abzurufen, ohne ihn anzuzeigen. * / $ rssfeed = $ wpdb-> get_results ("SELECT * FROM $ wpdb-> postet WHERE post_type = 'rss' UND post_status = 'publish' AND post_author =" current_user-> ID. "");
Wenn ein RSS-Feed gefunden wurde, können Sie die Feed-URL in einer Schleife starten und den neuesten Artikel aus dem Feed abrufen.
foreach ($ rssfeed als $ post): setup_postdata ($ post); Echo "". $ post-> post_title."
"; $ rss = fetch_feed (esc_url ($ post-> post_excerpt)); if (! is_wp_error ($ rss)): $ item = $ rss-> get_item (0); echo esc_html ($ item-> get_title ()) endif; endforeach;
Jetzt haben wir bereits den ersten Artikel, der in unsere Website eingefügt werden soll. Bevor Sie mit dem Hinzufügen in die Datenbank fortfahren, prüfen Sie am besten, ob der Artikel bereits auf unserer Website vorhanden ist. Wir überprüfen den Titel des Feedeintrags, wenn er bereits vorhanden ist. Dies ist nur eine grundlegende Methode. Sie können weitere Attribute überprüfen, um sicherzustellen, dass in der Datenbank kein doppelter Artikel vorhanden ist.
if ($ wpdb-> get_row ("SELECT post_title FROM $ wpdb-> veröffentlicht WO post_title = '". $ item -> get_title (). "' AND post_status = 'publish'", 'ARRAY_A')): echo "Nein neuer Artikel gefunden "; else: echo esc_html ($ item-> get_title ()); endif;
Die Daten, die wir aus dem Feed abrufen, können wir nun in unserer Datenbank verarbeiten. Um es für unsere Nutzer so einfach wie möglich zu gestalten, fügen wir das gesendete Formular direkt nach dem Abrufen und Überprüfen der URL bei.
Echo '';
Im Beispiel bearbeiten wir den Titel, den Inhalt, die Permalinks und das Datum, das in unsere Datenbank eingefügt werden soll. Die Benutzer sehen den Titel und die Schaltfläche "Senden" wie in der Abbildung unten.
Der letzte Schritt besteht darin, die Daten in die Datenbank einzufügen. Wir bereiten die Anweisung vor dem Ausführen der Abfrage vor.
$ prepar_content = array ('post_date' => $ _POST ["date"], 'post_title' => esc_html ($ _ POST ["post_title"]), 'post_content' => $ _POST ["content"], 'post_author' => $ current_user-> ID, 'post_status' => 'publish', 'post_type' => 'rss');
Wir werden diese Details zuerst verarbeiten, bevor wir die zusätzlichen Daten in unsere benutzerdefinierte Meta-Box einfügen.
$ post_id = wp_insert_post ($ prepar_content); add_post_meta ($ post_id, 'feed_item_permalink', esc_url ($ _ POST ["permalink"]));
Nun werden alle Artikeldaten erfolgreich in die Datenbank eingefügt. Wir haben jetzt eine Syndikator- oder Ping-Site, die zur Verwendung bereit ist. Es gibt mehr Möglichkeiten, die Sie hinzufügen können, um die Qualität Ihrer Ping-Site zu verbessern. Dies war jedoch eine einfache Einführung.
Ich habe den vollständigen Quellcode (Link oben in diesem Artikel) beigefügt, den ich auf der Demo RSS Site verwende. Wenn Sie Vorschläge oder Verbesserungen für dieses Lernprogramm haben, freue ich mich darauf, die Ideen und Vorschläge in den folgenden Kommentaren zu lesen.