Auf vielen Client-Sites, die ich errichte, finde ich manchmal, dass ich einen Eintrag auf einer Seite hinzufügen muss. Ich spreche hier nicht von Archivseiten, sondern füge einer vorhandenen statischen Seite eine benutzerdefinierte Auflistung hinzu.
Ich möchte beispielsweise einige Posts auf der Seite "Info" auflisten, oder die Website erfordert möglicherweise eine ausführliche Seite für ein Thema mit einer Liste von Posts und benutzerdefinierten Beitragstypen, die sich auf dieses Thema beziehen.
Eine Möglichkeit hierzu ist das Erstellen einer benutzerdefinierten Seitenvorlage, die den aktuellen Seiteninhalt und die Ergebnisse einer zweiten benutzerdefinierten Abfrage enthält. Wenn Sie jedoch mehr Flexibilität bei der Auflistung von Beiträgen wünschen oder dies nur ein paar Mal tun möchten, a Shortcode wird eine einfachere Lösung sein.
In diesem Tutorial zeige ich Ihnen, wie Sie einen einfachen Shortcode erstellen, um alle Beiträge eines benutzerdefinierten Beitragstyps aufzulisten. Anschließend werde ich das erweitern, um einen Shortcode mit verschiedenen Parametern zu erstellen, die Benutzer angeben können, um Beiträge beliebig aufzulisten.
Sie benötigen die folgenden Ressourcen:
Sie finden den gesamten Code zum Erstellen dieses Plugins im Code-Download.
Bevor Sie den Shortcode einrichten, müssen Sie einen benutzerdefinierten Post-Typ und zwei benutzerdefinierte Taxonomien registrieren, die wir zum Testen des Shortcodes verwenden werden.
Der Code dafür ist in dem Plugin enthalten, das ich für den Shortcode geschrieben habe. In einem Live-Projekt würde ich jedoch empfehlen, dieses vom Shortcode-Plugin selbst zu trennen.
Erstellen Sie eine neue Datei in Ihrem Plugins-Ordner und rufen Sie sie an post-Listing-shortcode.php.
Fügen Sie der Datei den folgenden Code hinzu.
Hinweis: Das Erstellen der benutzerdefinierten Post-Typen und Taxonomien ist für das Lernen aus diesem Lernprogramm nicht von zentraler Bedeutung. Wenn Sie möchten, können Sie diesen Code aus der Download-Datei kopieren und diese Stufe überspringen.
'Kleidung', 'singular_name' => 'Kleidungsstück', 'add_new' => 'Neu hinzufügen', 'add_new_item' => 'Neues Kleidungsstück hinzufügen', 'edit_item' => 'Kleidungsstück bearbeiten', 'neues_item' => 'New Clothing Item', 'all_items' => 'All Clothes', 'view_item' => 'View Clothing Item', 'search_items' => 'Kleidung suchen', 'not_found' => 'No Clothes Found', 'not_found_in_trash' => 'Keine Kleidung im Papierkorb gefunden', 'parent_item_colon' => ", 'menu_name' => 'Clothes',); register_post_type ('clothes', array ('labels' => $ labels, 'has_archive') => true, 'public' => true, 'hierarchisch' => true, 'unterstützt' => array ('title', 'editor', 'excerpt', 'custom-fields'), 'thumbnail', 'page- Attribute '),' taxonomies '=> array (' post_tag ',' category '),' exclude_from_search '=> true,' Capability_type '=>' post ',)); // Registrieren Sie zwei Taxonomien, um mit dem Post zu gehen Typ add_action ('init', 'rmcc_create_taxonomies', 0); Funktion rmcc_create_taxonomies () // Farbtaxonomie $ labels = array ('name' => _x ('Colors', 'taxonomy general name'), 'si ngular_name '=> _x (' Color ',' Taxonomy Singular Name '),' search_items '=> __ (' Suchfarben '),' all_items '=> __ (' All Colors '),' parent_item '=> __ ( 'Parent Color'), 'parent_item_colon' => __ ('Parent Color:'), 'edit_item' => __ ('Edit Color'), 'Update_item' => __ ('Update Color'), 'add_new_item' = > __ ('Neue Farbe hinzufügen'), 'new_item_name' => __ ('Neue Farbe'), 'menu_name' => __ ('Farben'),); register_taxonomy ('color', 'clothes', array ('hierarchisch' => true, 'labels' => $ labels, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); // Stofftaxonomie $ labels = array ('name' => _x ('Fabrics', 'taxonomy general name'), 'singular_name' => _x ('Fabric', 'taxonomy singular name'), 'search_items' => __ ('Suchgewebe'), 'all_items' => __ ('Alle Struktur'), 'parent_item' => __ ('übergeordnete Struktur'), 'parent_item_colon' => __ ('übergeordnete Struktur:'), 'edit_item' '=> __ (' Fabric bearbeiten '),' update_item '=> __ (' Fabric aktualisieren '),' add_new_item '=> __ (' Neue Fabric hinzufügen '),' new_item_name '=> __ (' Neue Fabric ') , 'menu_name' => __ ('Stoffe'),); register_taxonomy ('fabric', 'clothes', array ('hierarchisch' => true, 'labels' => $ labels, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); ?>
Dies informiert WordPress über das Plugin und registriert den benutzerdefinierten Beitragstyp "Kleidung" und die beiden Taxonomien "Farbe" und "Stoff"..
Speichern Sie dieses Plugin und aktivieren Sie es über die Plugins-Seite in WordPress.
Jetzt haben Sie Ihren benutzerdefinierten Beitragstyp und Ihre Taxonomien. Erstellen Sie einige Beiträge mit ihnen. Im folgenden Screenshot sehen Sie den von mir erstellten Inhalt:
Wenn Sie mit Ihrem Shortcode nur Inhalte auf eine Weise auflisten möchten, können Sie einen sehr einfachen Shortcode erstellen, der keine Parameter verwendet.
Öffnen Sie Ihre Plugin-Datei erneut und fügen Sie Folgendes hinzu:
// Shortcode erstellen, um alle Kleidungsstücke aufzulisten, die in blau erscheinen add_shortcode ('list-posts-basic', 'rmcc_post_listing_shortcode1'); Funktion rmcc_post_listing_shortcode1 ($ atts) ob_start (); $ query = new WP_Query (array ('post_type' => 'clothes', 'color' => 'blue', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'title ',)); if ($ query-> have_posts ()) ?>
Dadurch wird ein einfacher Kurzcode erstellt WP_Query
um eine benutzerdefinierte Abfrage für Ihren Inhalt auszuführen und die Ergebnisse in einer Liste auszugeben. Wenn ich tippe [list-posts-basic]
In einer Seite sind die Ergebnisse wie in diesem Screenshot dargestellt:
Der Shortcode ist viel nützlicher, wenn Benutzer ihre eigenen Parameter hinzufügen können. Wählen Sie beispielsweise Folgendes aus:
Um dies dem Shortcode hinzuzufügen, verwenden Sie die shortcode_atts ()
Funktion, mit der Sie einige Standardattribute angeben können, die Benutzer überschreiben können.
Fügen Sie noch einmal in Ihrer Plugin-Datei und unterhalb des Codes für den ersten Shortcode Folgendes hinzu:
// Shortcode mit Parametern erstellen, damit der Benutzer definieren kann, was abgefragt wird. Standardmäßig werden alle Blogbeiträge aufgelistet. add_shortcode ('list-posts', 'rmcc_post_listing_parameters_shortcode'); Funktion rmcc_post_listing_parameters_shortcode ($ atts) ob_start (); // Attribute definieren und ihre Standardwerte extrahieren (shortcode_atts (array ('type' => 'post', 'order' => 'date', 'orderby' => 'title', 'posts' => -1, 'color '=> ",' fabric '=>",' category '=> ",), $ atts)); // Definieren Sie Abfrageparameter basierend auf den Attributen $ options = array (' post_type '=> $ type,' order ' => $ order, 'orderby' => $ orderby, 'posts_per_page' => $ posts, 'color' => $ color, 'fabric' => $ fabric, 'category_name' => $ category,); $ query = new WP_Query ($ options); // Ausführen der Schleife basierend auf der Abfrage if ($ query-> have_posts ()) ?>
Hinweis: Verwenden ob_start ()
und ob_get_clean ()
stellt sicher, dass die Schleife an der Stelle auf Ihrer Seite oder dem Post ausgegeben wird, an der Sie den Shortcode hinzugefügt haben. Wenn Sie diese nicht hinzufügen, wird die Liste oben im Inhalt angezeigt.
Standardmäßig werden hier alle Beiträge in absteigender Reihenfolge nach Datum aufgelistet [list-posts]
In einer Seite oder in einem Beitrag ist das Ergebnis wie in diesem Screenshot:
Wenn Sie jedoch einige Parameter hinzufügen, werden die Dinge interessanter. Um beispielsweise alle Kleidungsstücke aufzulisten, die in der Farbe Schwarz kommen, tippe ich [list-posts type = "clothes" color = "black" orderby = "name" order = "ASC"]
:
Oder alle Kleidungsstücke in der Kategorie "Smart" auflisten, die ich eingebe [list-posts type = "clothes" category = "smart" orderby = "name" order = "ASC"]
:
Wenn Sie möchten, können Sie weitere Attribute angeben, mit denen Benutzer arbeiten können. Sie müssen jedoch alle verfügbaren Attribute in Ihr Plugin aufnehmen extrahieren (shortcode_atts))
Funktion.
Sie müssen nicht für alle einen Standard angeben. In diesem Beispiel habe ich die Parameter für Kategorie und Taxonomie leer gelassen. Die Parameter, die Sie definieren können, sind beliebige, für die angegeben werden kann WP_Query
- Eine vollständige Liste finden Sie auf der Codex-Seite.
Das Einfügen eines Eintrags in eine Seite oder einen Beitrag kann sehr nützlich sein. Es erspart Ihnen, Ihre Vorlagendateien zu ändern oder eine benutzerdefinierte Seitenvorlage zu schreiben.
Der Shortcode, den Sie in diesem Plugin erstellt haben, kann auf vielfältige Weise verwendet werden. Natürlich können Sie auch die Ausgabe des Shortcodes ändern. In meinem Beispiel wird eine Aufzählungsliste mit Posttiteln angezeigt, die in einem Link zu ihrer Seite enthalten sind Sie können den Code innerhalb der Schleife durch die Vorlagen-Tags ersetzen, um den Inhalt, die angezeigten Bilder oder andere Elemente anzuzeigen.
Einige nützliche Ressourcen zu den oben behandelten Themen: