Mit einem WordPress Post -Series -Plugin können Sie Ihre Beiträge seriell organisieren, um ein Buch oder einen Kurs zu erstellen. Es bietet Benutzern einen Weg zum Lernen. Die Plugins der Post -Serie können auch verwendet werden, um einen langen Beitrag in mehrere Teile aufzuteilen.
In diesem Tutorial zeige ich Ihnen, wie Sie ein Plugin zum Anzeigen einer Reihe von Beiträgen erstellen. Sie können den gleichen Code auch in ein Thema als Themenfunktionalität integrieren.
In WordPress werden Taxonomien verwendet, um ähnliche Beiträge zusammen zu gruppieren oder zu organisieren. WordPress bietet jedoch nicht eine Möglichkeit, alle Beiträge einer bestimmten Taxonomie auf eine serielle Weise anzuzeigen. WordPress -Taxonomien werden mit einer Archive.php -Datei angezeigt, sodass wir keine Postreihe als einzelne, indexierbare Post erstellen können.
Wir brauchen also eine Postserie, die tatsächlich ein Beitrag ist, der andere Beiträge auf serielle Weise enthält.
Es gibt viele verschiedene Möglichkeiten, eine Postserie zu erstellen. Beliebte Post -Serie -Plugins bei WordPress.org verwenden benutzerdefinierte Taxonomien in WordPress -Posts, um eine Post -Serie zu erstellen. In diesem Tutorial verwende ich stattdessen benutzerdefinierte Post -Typen.
Erstellen Sie ein Plugin-Verzeichnis mit dem Namen SitePoint-Post-Serie und platzieren Sie zwei Dateien mit dem Namen SitePoint-Post-Series.php und SitePoint-Post-Serie.css.
Platzieren Sie in der Datei SitePoint-Post-Series.php den folgenden Code, so
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
So erstellen Sie eine Post -Serie benutzerdefinierte Post -Typ
Platzieren Sie den Code unten in einer Datei namens SitePoint-Post-Series.php:
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
Hier haben wir einen benutzerdefinierten Beitragstyp mit denselben Taxonomien erstellt, die von WordPress -Posts verwendet werden. Dies ist so, dass Sie auch eine Kategorie -Postreihe erstellen können.
Wir haben auch Aktivierungs- und Deaktivierungshaken hinzugefügt, um Regeln zu umschreiben. Dies ist so, dass die Postserie am vorderen Ende angezeigt werden kann.
Hier ist, was unser benutzerdefinierter Beitragstyp auf dem Administratorbildschirm schaut:
Jetzt müssen wir der Adminface Adminface von WordPress Posts Meta -Boxen hinzufügen. Dies ist so, dass Autoren einen Beitrag an eine Post -Serie anhängen und eine Seriennummer zur Sortierung der Beiträge in einer Post -Serie angeben können.
Hier ist der Code, um eine Meta -Box zu der Post -Serie hinzuzufügen:
<span>function sitepoint_post_series_custom_post_type() </span><span>{ </span> <span>register_post_type("sitepoint-postseries", array( </span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")), </span> <span>"public" => true, </span> <span>"has_archive" => true, </span> <span>"rewrite" => array("slug"=> "post-series"), </span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"), </span> <span>"capability_type" => "post", </span> <span>"publicly_queryable" => true, </span> <span>"taxonomies" => array("category", "post_tag"), </span> <span>) </span> <span>); </span><span>} </span> <span>add_action("init", "sitepoint_post_series_custom_post_type", 2); </span> <span>/* Flush Rewrite Rules */ </span> <span>function sitepoint_post_series_activation() </span><span>{ </span> <span>sitepoint_post_series_custom_post_type(); </span> <span>flush_rewrite_rules(); </span><span>} </span> <span>register_activation_hook( __FILE__, "sitepoint_post_series_activation"); </span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>
Hier fügen wir dem Metabox zwei Felder hinzu. Das Textfeld wird vom Autor verwendet, um die Seriennummer einzugeben, und der Dropdown wird verwendet, um den Namen der Postserie auszuwählen, zu dem der Beitrag gehört. Wenn Sie einer Postserie keinen Beitrag hinzufügen möchten, sollten entweder ein oder beide Felder leer gelassen werden.
Hier ist, wie es auf dem Bildschirm Admin -Post aussieht:
Jetzt müssen wir die Meta -Box -Felder speichern, wenn das Formular gespeichert ist. Hier ist der Code, um das zu tun:
/* Add Custom Meta Boxes in WordPress Posts */ function sitepoint_post_series_meta_box_markup($object) { wp_nonce_field(basename(__FILE__), "sitepoint-postseries"); ?> <span><span><span><div</span>></span> </span> <span><span><span><label</span> for<span>="sitepoint-postseries-serial-number"</span>></span>Serial Number<span><span></label</span>></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><input</span> name<span>="sitepoint-postseries-serial-number"</span> type<span>="text"</span> value<span>="<span><?php echo get_post_meta($object->ID, "sitepoint-postseries-serial-number", true); ?></span>"</span>></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><label</span> for<span>="sitepoint-postseries-id"</span>></span>Name<span><span></label</span>></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><select</span> name<span>="sitepoint-postseries-id"</span>></span> </span> <span><span><span><option</span> value<span>=""</span>></span>-<span><span></option</span>></span> </span> <span><span><?php </span></span><span> <span>$posts = get_posts("post_type=sitepoint-postseries"); </span></span><span> <span>$selected_series = get_post_meta($object->ID, "sitepoint-postseries-id", true); </span></span><span> <span>foreach($posts as $post) </span></span><span> <span>{ </span></span><span> <span>$id_post = $post->ID; </span></span><span> <span>if($id_post == $selected_series) </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><option</span> selected value<span>="<span><?php echo $post->ID; ?></span>"</span>></span><span><?php echo $post->post_title; ?></span><span><span></option</span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><option</span> value<span>="<span><?php echo $post->ID; ?></span>"</span>></span><span><?php echo $post->post_title; ?></span><span><span></option</span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>?></span> </span> <span><span><span></select</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>} </span></span><span> </span><span><span>function sitepoint_post_series_custom_meta_box() </span></span><span><span>{ </span></span><span> <span>add_meta_box("sitepoint-postseries", "Post Series", "sitepoint_post_series_meta_box_markup", "post", "side", "low", null); </span></span><span><span>} </span></span><span> </span><span><span>add_action("add_meta_boxes", "sitepoint_post_series_custom_meta_box");</span></span>
Hier speichern wir den Inhalt der Meta -Box und rufen dann die Funktion sitepoint_post_series_save_Setings mit unterschiedlichen Argumentwerten auf, je nachdem, ob der Benutzer eine Serie entfernt, eine Serie hinzufügt oder eine Serie ändert.
Hier ist der Code für die Funktion SITEPOINT_POST_SERIES_SAVE_SETTINGS
<span>/* Callback to Save Meta Data */ </span> <span>function sitepoint_post_series_save_custom_meta_box($post_id, $post, $update) </span><span>{ </span> <span>if(!isset($_POST["sitepoint-postseries"]) || !wp_verify_nonce($_POST["sitepoint-postseries"], basename(__FILE__))) </span> <span>return $post_id; </span> <span>if(!current_user_can("edit_post", $post_id)) </span> <span>return $post_id; </span> <span>if(defined("DOING_AUTOSAVE") && DOING_AUTOSAVE) </span> <span>return $post_id; </span> <span>$slug = "post"; </span> <span>if($slug != $post->post_type) </span> <span>return; </span> <span>$serial_number = null; </span> <span>if(isset($_POST["sitepoint-postseries-serial-number"])) </span> <span>{ </span> <span>$serial_number = $_POST["sitepoint-postseries-serial-number"]; </span> <span>} </span> <span>else </span> <span>{ </span> <span>$serial_number = ""; </span> <span>} </span> <span>update_post_meta($post_id, "sitepoint-postseries-serial-number", $serial_number); </span> <span>$series_id = null; </span> <span>if(isset($_POST["sitepoint-postseries-id"])) </span> <span>{ </span> <span>$series_id = $_POST["sitepoint-postseries-id"]; </span> <span>} </span> <span>else </span> <span>{ </span> <span>$series_id = ""; </span> <span>} </span> <span>$previous_series_id = get_post_meta($post_id, "sitepoint-postseries-id", true); </span> <span>update_post_meta($post_id, "sitepoint-postseries-id", $series_id); </span> <span>//no series, removing series, adding new series or changing series </span> <span>if($previous_series_id == "" && $series_id == "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span> <span>else if($previous_series_id != "" && $series_id == "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id); </span> <span>} </span> <span>else if($previous_series_id == "" && $series_id != "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span> <span>else if($previous_series_id != "" && $series_id != "") </span> <span>{ </span> <span>sitepoint_post_series_save_settings($previous_series_id, "", $post_id); </span> <span>sitepoint_post_series_save_settings($series_id, $serial_number, $post_id); </span> <span>} </span><span>} </span> <span>add_action("save_post", "sitepoint_post_series_save_custom_meta_box", 10, 3);</span>
Diese Funktion erstellt eine Zeichenfolge, die die WordPress -Post -IDs speichert, die zu einer bestimmten Serie gehören. Und dann speichert es die Zeichenfolgen als WordPress -Einstellung.
Jetzt sind wir mit dem gesamten Administratorvorwurf fertig. Sie sollten jetzt in der Lage sein, Beiträge zu erstellen und sie einer Serie zuzuweisen. Und weisen Sie jeder Serie auch Kategorien und Tags zu.
Lassen Sie uns nun das vordere Ende codieren, um die Post -Serie anzuzeigen.
Der benutzerdefinierte Post -Typ ist auf den Index- und Archivseiten noch nicht sichtbar. Um es auch auf diesen Seiten sichtbar zu machen, müssen Sie nur den folgenden Code hinzufügen:
<span>/* Store WordPress posts and Post Series CTY relations as WordPress Settings. */ </span> <span>function sitepoint_post_series_save_settings($series_id, $serial_number, $post_id) </span><span>{ </span> <span>if($series_id != "" && $serial_number != "") </span> <span>{ </span> <span>$post_series_list = get_option("post_series_" . $series_id . "_ids", ""); </span> <span>if($post_series_list == "") </span> <span>{ </span> <span>$post_series_list_array = array($post_id); </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array = explode(',', $post_series_list); </span> <span>if(in_array($post_id, $post_series_list_array)) </span> <span>{ </span> <span>//do nothing </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array[] = $post_id; </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>} </span> <span>} </span> <span>else if($series_id == "" || $serial_number == "") </span> <span>{ </span> <span>$post_series_list = get_option("post_series_" . $series_id . "_ids", ""); </span> <span>if($post_series_list == "") </span> <span>{ </span> <span>} </span> <span>else </span> <span>{ </span> <span>$post_series_list_array = explode(',', $post_series_list); </span> <span>if(in_array($post_id, $post_series_list_array)) </span> <span>{ </span> <span>//here remove the post id from array. </span> <span>if(($key = array_search($post_id, $post_series_list_array)) !== false) { </span> <span>unset($post_series_list_array[$key]); </span> <span>} </span> <span>$post_series_list = implode (", ", $post_series_list_array); </span> <span>update_option("post_series_" . $series_id . "_ids", $post_series_list); </span> <span>} </span> <span>else </span> <span>{ </span> <span>} </span> <span>} </span> <span>} </span><span>}</span>
Hier verwenden wir Pre_Get_Posts Hook, um der Variablen $ Q eine Postreihe hinzuzufügen, die von der Hauptschleife verwendet wird, um Beiträge anzuzeigen.
Anzeigen
Wir müssen den Inhalt des Postserie -Typs filtern und Beiträge zur Serie hinzufügen.Hier ist der Code zum Hinzufügen von Beiträgen einer Postserie in einer Postreihenseite.
<span>/* Displaying Custom Post Types on Index Page */ </span> <span>function sitepoint_post_series_pre_posts($q) </span><span>{ </span> <span>if(is_admin() || !$q->is_main_query() || is_page()) </span> <span>return; </span> <span>$q->set("post_type", array("post", "sitepoint-postseries")); </span><span>} </span> <span>add_action("pre_get_posts", "sitepoint_post_series_pre_posts");</span>
Dies zeigt die Beiträge mit dem nicht ordnungsgemäßen HTML -Listen -Tag an. Für Beiträge ohne Bild laden wir ein Bild aus dem Lorempixel Cloud -Dienst, um zufällige Texturbilder zu generieren.
Wir rufen die Beiträge einer Postserie aus der Einstellungsfolge ab, die wir während des Speicherns von Meta -Daten gespeichert haben.
Wir können auch ein Post -Serie -Feld zu Posts hinzufügen, die zu einer Postreihe gehören, um dem Benutzer anzuzeigen, dass der Beitrag zu einer bestimmten Post -Serie gehört. Hier ist der Code, um das zu tun:
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: SitePoint Post Series </span></span><span><span>Plugin URI: https://www.sitepoint.com/ </span></span><span><span>Description: This used is used to create a post series. </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
Hier zeigen wir nur einen Namen der Postserie und welcher Teil dieses Beitrags aus der Serie stammt.
Sie können auch den nächsten und vorherigen Beitrag der Serie hinzufügen, indem Sie die folgende Implementierung der Funktion SITEPOINT_POST_SERIES_POST_CONTENT_FILTER verwenden:
<span>function sitepoint_post_series_custom_post_type() </span><span>{ </span> <span>register_post_type("sitepoint-postseries", array( </span> <span>"labels" => array("name" => __("Post Series"), "singular_name" => __("Post Series")), </span> <span>"public" => true, </span> <span>"has_archive" => true, </span> <span>"rewrite" => array("slug"=> "post-series"), </span> <span>"supports" => array("editor", "title", "excerpt", "thumbnail", "comments"), </span> <span>"capability_type" => "post", </span> <span>"publicly_queryable" => true, </span> <span>"taxonomies" => array("category", "post_tag"), </span> <span>) </span> <span>); </span><span>} </span> <span>add_action("init", "sitepoint_post_series_custom_post_type", 2); </span> <span>/* Flush Rewrite Rules */ </span> <span>function sitepoint_post_series_activation() </span><span>{ </span> <span>sitepoint_post_series_custom_post_type(); </span> <span>flush_rewrite_rules(); </span><span>} </span> <span>register_activation_hook( __FILE__, "sitepoint_post_series_activation"); </span><span>register_deactivation_hook( __FILE__, "sitepoint_post_series_activation");</span>
Das Problem bei dieser Implementierung ist, dass der Code die MySQL -Häufigkeit entspricht, die der Anzahl der Beiträge in der Serie entspricht. Es gibt ein Leistungsproblem, wenn Sie viele Beiträge für eine bestimmte Postserie haben, aber ich habe es für Bildungszwecke aufgenommen.
Hier sind einige der Plugins auf WordPress.org, mit denen Sie eine Postserie erstellen können. Ich habe jeweils mit dem oben erstellten Plugin verglichen.
Unser Plugin ist sehr anpassbar und enthält keine WordPress -Hacks. Als solches ist es viel kompatibler.
Wenn Sie ein Entwicklungsblog besitzen, können Sie dieses Plugin verwenden, um Ihre eigene Post -Serie zu erstellen, die Ihre Engagement- und Conversion -Raten erhöhen kann. Sie können es sogar verwenden, um Ihre großen Beiträge in mehrere Beiträge aufzuteilen.
Sie können Ihre Erfahrungen mit dem Plugin unten kommentieren.
Ja, die meisten Plugins der Postserie bieten Anpassungsoptionen an. Sie können das Layout, Farben, Schriftarten und andere Designelemente so ändern, dass sie der allgemeinen Ästhetik Ihrer Website entsprechen. Einige Plugins ermöglichen es Ihnen außerdem, benutzerdefinierte CSS für eine erweiterte Anpassung hinzuzufügen. Indem Sie verwandte Beiträge zusammen gruppieren, erstellen Sie ein reiches Netzwerk interner Links, die Suchmaschinen lieben. Es erhöht auch die Verweilzeit auf Ihrer Website, da die Leser in einer Serie eher mehrere Beiträge lesen. Sie können so viele Postserien erstellen, wie Sie benötigen. Dies ist besonders nützlich für Websites, die mehrere Themen abdecken oder unterschiedliche Arten von serialisierten Inhalten haben. Neue Beiträge zu einer Serie jederzeit. Mit den meisten Plugins der Post-Serie können Sie Ihre Serie einfach verwalten und aktualisieren, um sicherzustellen, dass Ihr Inhalt relevant und aktuell bleibt. >
Ja, ein Post-Series-Plugin kann auf einer Multi-Autor-Site verwendet werden. Es kann ein großartiges Werkzeug für das Verwalten und Organisieren von Inhalten mehrerer Autoren sein und die Konsistenz und Kohärenz in allen Beiträgen sicherstellen. Sie benötigen keine Codierungsfähigkeiten, um eine Post -Serie auf WordPress zu erstellen. Die meisten Plugins der Post-Serie sind mit einer benutzerfreundlichen Schnittstelle ausgestattet, mit der Sie Ihre Serie einfach erstellen und verwalten können. Post -Series -Plugins sind so konzipiert, dass sie nahtlos mit jedem WordPress -Thema arbeiten. Es ist jedoch immer eine gute Idee, die Dokumentation des Plugins zu überprüfen oder den Entwickler zur Bestätigung zu kontaktieren. Plugins für WordPress verfügbar. Beachten Sie jedoch, dass kostenlose Plugins möglicherweise nicht so viele Funktionen oder so viel Unterstützung bieten wie Premium -Plugins. Wählen Sie immer ein Plugin aus, das am besten zu Ihren Anforderungen und Ihrem Budget passt.Das obige ist der detaillierte Inhalt vonErstellen eines Post -Series -Plugins für WordPress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!