Erstellen dynamischer Taxonomieseiten mit WordPress
() translation by (you can also view the original English article)
Haben Sie sich jemals gefragt, wie Sie eine Bibliothek erstellen können, die so flexibel ist wie der Inhalt, den Sie veröffentlichen? Heute werde ich Ihnen zeigen, wie ich dynamsche Taxonomieseiten für die Musiker in meinem Musikblog einrichte, aber Sie können dieselben Techniken auf verschiedene Arten anwenden. Dieses Tutorial zeigt Ihnen, wie Sie einen dynamischen Datensatz für alles erstellen können, worüber Sie schreiben.
Ich betreibe eine große Musikwebsite. Um zu verfolgen, wann und in welchem Kontext verschiedene Künstler erwähnt wurden, wollte ich für jeden eine Seite erstellen. Durch das Erstellen neuer Taxonomien in WordPress konnte ich dies tun, indem ich einfach eine Band/einen Künstler in einem WordPress-Beitrag markierte. Darüber hinaus könnte ich dynamisch Affiliate-Links erstellen und biografische Inhalte von einer Website wie Last.FM einzeichnen.
Dieses Tutorial zeigt Ihnen, wie Sie Ihre Taxonomie einrichten, eine Vorlage dafür erstellen und dann eine dynamische Generierung von Inhalten und Links zum Künstler in Ihrer Taxonomie an anderer Stelle im Web implementieren
Schritt 1 Einrichten Ihrer benutzerdefinierten Taxonomien
Um zu beginnen, müssen Sie Ihrer WordPress-Installation die Funktion für benutzerdefinierte Taxonomien hinzufügen. Öffnen Sie dazu einfach Ihre Datei functions.php in Ihrem Themenordner, scrollen Sie ganz nach unten und aktivieren Sie die Funktion wie folgt:
1 |
/*
|
2 |
*Adds the custom taxonomy function to our functions.php file.
|
3 |
*/
|
4 |
add_action( 'init', 'build_taxonomies', 0 ); |
Sobald Sie dies getan haben, können Sie die gewünschten Taxonomien hinzufügen. In diesem Tutorial fügen wir eine Künstlertaxonomie hinzu, mit der wir Bands in von uns verfassten Posts markieren und WordPress eine Menge Informationen über diese Band oder diesen Sänger abrufen kann, ohne dass wir jemals etwas anderes tun müssen. Abgesehen davon, lassen Sie uns fortfahren und die 'Artist'-Taxonomie direkt unter der Taxonomie-Funktion einfügen, die wir gerade hinzugefügt haben.
1 |
function build_taxonomies() { |
2 |
register_taxonomy( 'artist', 'post', //Let WordPress know that the artist taxonomy has posts |
3 |
array( |
4 |
'hierarchical' => false, |
5 |
'label' => 'Artists', // This tells WordPress how to label the various user interface outlets for the artist taxonomy |
6 |
'query_var' => true, |
7 |
'rewrite' => array( 'slug' => 'artist', 'with_front' => false )) |
8 |
);
|
9 |
}
|
Sie müssen keine Künstlertaxonomie hinzufügen, Sie können jede gewünschte Taxonomie hinzufügen. Wir machen es nur für die Zwecke dieses Tutorials. Eine vollständige Liste der Argumente und Optionen, die Sie im Array verwenden können, finden Sie im Codex. Fügen Sie hinzu oder entfernen Sie alles, was Sie möchten. Solange Sie die hier kommentierten Teile verlassen, wird es Ihnen gut gehen.
Öffnen wir jetzt unser WordPress-Admin-Panel und schreiben einen Beitrag. Beachten Sie, dass sowohl Ihrem Admin-Menü als auch Ihren Ansichten zum Schreiben von Posts ein neues Feld "Artist" hinzugefügt wurde. Dies bedeutet, dass WordPress Ihre neue Funktion erkannt hat. Brillant!



Sobald Sie im Künstler-Tag-Feld auf "Hinzufügen" klicken und auf "Veröffentlichen" klicken, erstellt WordPress automatisch einen neuen Künstler mit dem Namen "Wie auch immer Sie Ihre Band genannt haben". Für dieses Tutorial habe ich eine lokale Band namens "Kutosis" ausgewählt.
Einige Leute werden sagen, dass Sie nur eine Kategorieseite haben könnten, um dasselbe zu tun. Sie haben irgendwie recht, aber wir werden gleich auf zwei Probleme stoßen, wenn wir das tun:
- Wenn wir über eine gute Anzahl von Bands schreiben, wird unsere WordPress-Installation bald sehr chaotisch, wenn wir für jede Band eine Kategorie erstellen
- Wenn wir dynamisch erstellte Inhalte für jeden Künstler einfügen möchten, schwimmen wir in unnötigem Code
Die Verwendung benutzerdefinierter Taxonomien hilft uns, diese Probleme zu vermeiden, und ermöglicht eine echte Skalierbarkeit unserer Website. Dies bedeutet auch, dass wir durch die Bereitstellung eines Artist-Tags eine Menge cooler Dinge mit API-Aufrufen von Musikwebsites erledigen können.
Bevor wir uns jedoch über alle Möglichkeiten freuen, müssen wir herausfinden, wie die Informationen auf unserer Seite angezeigt werden
Schritt 2 Einrichten unserer single.php-Vorlage
Nachdem wir angegeben haben, dass unser Beitrag Verweise auf eine bestimmte Band/einen bestimmten Künstler enthält, müssen wir den Lesern des Beitrags darauf hinweisen können. Der Weg, dies zu tun, besteht darin, ein paar einfache Codezeilen hinzuzufügen, um Links zu allen Künstlern anzuzeigen, über die wir mit der Datei single.php gesprochen haben, mit der WordPress einzelne Beiträge anzeigt.



Siehe den Link? Genau dort, wo "In diesem Beitrag" steht, wird dieser Link durch Hinzufügen des folgenden Codes zu unserer single.php-Datei hergestellt. Ich habe mich entschieden, es direkt über dem Teil meiner Vorlage hinzuzufügen, der die Kommentarvorlage aufruft:
1 |
<?php
|
2 |
// We need to tell WordPress to look for our custom taxonomy lists
|
3 |
|
4 |
$taxo_text = ""; |
5 |
|
6 |
// Then we need to tell it which one we want in particular and store it for use in our code.
|
7 |
|
8 |
$artist_list = get_the_term_list( $post->ID, 'artist', '<strong>In this post:</strong> ', ', ', '' ); |
9 |
if ( '' != $artist_list ) { |
10 |
$taxo_text .= "$artist_list<br />\n"; |
11 |
}
|
12 |
|
13 |
// Now we need to tell Wordpress exactly how we want to display the tag
|
14 |
|
15 |
if ( '' != $taxo_text ) { |
16 |
?>
|
17 |
<div class="entry-utility"> |
18 |
<?php
|
19 |
echo $taxo_text; |
20 |
?>
|
21 |
</div>
|
22 |
// This just let's WordPress know that there's an else argument. It will remove the 'In this post' if no artists have been tagged. |
23 |
<?
|
24 |
}
|
25 |
?>
|
26 |
|
27 |
// You don't need the following line. I have left it here to show you where I placed my code. |
28 |
<?php comments_template( '', true ); ?> |
Dieser Codeabschnitt weist WordPress an, einige Dinge zu tun:
- Es weist WordPress an, nach Tags zu suchen, die dem Beitrag zugeordnet sind
- Dann gibt es an, dass wir am Artist-Tag interessiert sind
- Danach teilt es Wordpress mit, wie wir es anzeigen möchten, wenn es vorhanden ist, und wie nichts angezeigt werden soll, wenn dem Beitrag kein Tag zugeordnet ist
Schritt 3 Erstellen einer Taxonomievorlage
Jetzt haben wir die Möglichkeit, auf eine Archivseite zu verlinken, auf der alle Beiträge angezeigt werden, die mit dem im Beitrag getaggten Künstler verknüpft sind. Wir könnten dort aufhören, aber es gibt so viel mehr, dass wir aus diesen mächtigen kleinen Taxonomien herauskommen können. Was ist zum Beispiel, wenn wir unseren Blog monetarisieren und Affiliate-Links einrichten möchten, um die Musik des Künstlers bei iTunes zu kaufen, oder einfach unseren Lesern das Schreiben mit einigen Spotify-Melodien des betreffenden Künstlers ermöglichen möchten? Oder noch besser - wenn wir neugierige Leser haben, können wir ihnen erlauben, ein wenig über den in der Post getaggten Künstler zu lesen und müssen selbst kein Wort schreiben. Aufregend, oder?!
Anstatt unserer Archivvorlage jede Menge bedingten Code hinzuzufügen und sie lächerlich lang zu machen, können wir die Vorlagenhierarchie von WordPress voll ausnutzen. Wir werden eine Datei namens taxonomy-artist.php hinzufügen, die fast der erste Dateiname ist, nach dem WordPress sucht, um unsere Informationen zu formatieren. Weitere Informationen zu WordPress-Vorlagenhierarchien finden Sie im WordPress-Codex.
Duplizieren Sie die Datei archive/category.php aus Ihrem Thema und benennen Sie sie in taxonomy-artist.php um (oder wenn Sie sich entschieden haben, eine andere Taxonomie zu erstellen, ändern Sie den Künstler für eine beliebige Taxonomie), damit Sie sie problemlos verwalten können Ihre Vorlagenstruktur. Sobald Sie die Dateien template/category.php dupliziert haben, sollten Sie Ihrer neuen taxonomy-artist.php-Datei den gesamten Code entziehen, der nicht den Anforderungen Ihrer Struktur entspricht. Keine Sorge, wir werden alles wieder hinzufügen, wenn wir weitermachen.
Sobald Sie gespeichert haben, bleibt eine Struktur wie diese übrig:



Nachdem wir den gesamten Code entfernt haben, den wir nicht benötigt haben, fügen wir den gesamten Code ein, den wir benötigen. Wir beginnen ganz oben, direkt unter der Überschrift unserer Seite, und fügen den vielleicht wichtigsten und kürzesten Code hinzu. Er sieht folgendermaßen aus:
1 |
<?php
|
2 |
// This sets out a variable called $term - we'll use it ALOT for what we're about to do.
|
3 |
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?> |
Diese kleine Schönheit gibt uns eine Variable namens $ term für alles, was wir tun werden. $term ist der Name unserer Taxonomie. In unserem Beispiel wird WordPress die Band Kutosis verwenden, da dies der Akt ist, den ich in meinem Beitrag markiert habe.
Dann können wir es in unserer Vorlage verwenden, um einen Taxonomietitel hinzuzufügen
1 |
<!-- See how we used the variable to let Wordpress know we want to display the title of the taxonomy? -->
|
2 |
<h2><?php echo $term->name; ?></h2> |
Wir können es auch verwenden, um eine Liste von Posts einzufügen, die auf unserer Website auf den Künstler verweisen. Hinweis: Sie müssen den Beitrag selbst markieren, da WordPress nicht für Sie raten wird.
1 |
<!-- Using the same variable, we can use it to display the posts that the artist has been tagged in -->
|
2 |
<h2><?php echo $term->name; ?> elsewhere on the site</h2> |
3 |
<ul class="artistappearances"> |
4 |
<?php while (have_posts()) : the_post(); ?> |
5 |
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a> - <?php the_time('d M Y'); ?></li> |
6 |
<?php endwhile; ?> |
7 |
</ul>
|
Schritt 4 Es ist API-Stunde!
Nachdem wir das alles getan haben, haben wir so etwas:



Es sieht nicht allzu beeindruckend aus, oder? Das liegt daran, dass wir die Lautstärke auf der Seite dieser Band wirklich erhöhen werden! Beginnen wir mit dem Hinzufügen einiger Links zum Künstler im Internet, um unseren Lesern einen Mehrwert zu bieten.
1 |
<!-- Let's add some links to show people where else they can find the artist on the web -->
|
2 |
<a href="http://www.last.fm/music/<?php echo $term->name; ?>" target="_blank">Last FM</a> | |
3 |
<a href="http://phobos.apple.com/WebObjects/MZSearch.woa/wa/search?term=<?php echo $term->name; ?>&type=artistName&partnerId=YOUR iTUNES AFFILIATE ID HERE">Buy Music</a> | |
4 |
<a href="spotify:search:<?php echo $term->name; ?>">Spotify</a> |
Diese drei Codezeilen sind Beispiele für Orte, zu denen Sie möglicherweise eine Verknüpfung herstellen möchten. Ich habe einen Link zu Last.FM, Spotify und iTunes hinzugefügt. Wenn Sie über den iTunes-Link beim Partnerprogramm angemeldet sind, können Sie Ihre Partner-ID zur URL hinzufügen. Wenn Sie kein Mitglied sind, machen Sie sich keine Sorgen, nehmen Sie sie einfach heraus.
Wie gesagt, dies sind nur Beispiele für Orte, auf die Sie verlinken können. Überall dort, wo Sie einen Link zum Künstler im Web hinzufügen möchten, müssen Sie nur herausfinden, wie die Permalinks zu dieser Site strukturiert sind und woher der Name des Künstlers stammt. Fügen Sie dann einfach die von uns eingerichtete Variable in die URL ein, wie ich es im obigen Code getan habe.
Das andere gute daran ist, dass selbst wenn der Künstler Leerzeichen in seinem Namen hat, die meisten Websites dies gut interpretieren können und sicherstellen, dass Sie an den richtigen Ort geleitet werden. Testen Sie es einfach und sehen Sie, was passiert. So sieht unsere Seite aus.



Lassen Sie uns nun tatsächlich eine API verwenden
Bisher haben wir unsere Links nur dynamisch gestaltet. Was ist, wenn wir unseren Lesern einen Mehrwert bieten und ihnen einen schnellen Überblick über den Künstler geben möchten, über den wir geschrieben haben?
Die Last.FM-API ermöglicht uns den vollständigen Zugriff auf die riesige Bibliothek mit Musikinformationen. Diese API ist wahrscheinlich eine der besten auf dem Markt und wir haben Glück! Nehmen wir die Biografie des Künstlers aus der Datenbank von Last.FM.
Wenn Sie noch keinen Last.FM-API-Schlüssel haben, müssen Sie sich für einen registrieren, indem Sie hier klicken, bevor Sie in diesem Lernprogramm fortfahren.
Sobald Sie Ihren Last.FM-API-Schlüssel erhalten haben, öffnen Sie die Datei taxonomy-artist.php und sichern Sie, wo Sie die Biografie platzieren möchten. Schauen Sie sich dann die Dokumentation auf der Last.FM-Website an, um festzustellen, dass der API-Aufruf für artist.getInfo wie folgt aufgebaut ist: http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=cher&api_key= yourapikeynumber.
Sofern Sie nicht auf jeder Künstlerseite Ihrer Website Informationen über Chers musikalische Karriere wünschen, müssen Sie einige Änderungen in der URL vornehmen. Löschen Sie Cher und ersetzen Sie es durch unsere Künstlervariable, damit Sie Folgendes haben:
1 |
http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=".$term->name."&api_key=YOUR_API_KEY |
Das ist die API-Aufrufstruktur, die wir verwenden werden, aber leider ist es nicht so einfach, sie in eine Vorlagendatei einzufügen und WordPress arbeiten zu lassen, es sind magische Ziffern. Wir müssen einen Weg finden, um der Seite genau zu sagen, welchen Teil der Informationen des Künstlers wir benötigen. Bevor wir jedoch vor uns selbst springen, sollten wir eine cURL-Funktion einrichten, um die Informationen von Last.FM zu erhalten.
CURL ist nicht der einzige Weg, dies zu tun, aber die meisten Webhosts werden sich über Sie ärgern, wenn Sie die anderen Funktionen wie fopen in Ihrer PHP.ini-Datei aktivieren, da dies ein Sicherheitsrisiko darstellen könnte. Um peinliche Fehlermeldungen zu vermeiden, wenn Ihr Webhost Sie mit einer Methode entdeckt, die non grata ist, gehen Sie am besten wie folgt vor:
1 |
<!-- Here's where we're going to print information about our artist -->
|
2 |
<?php
|
3 |
//Tell our page where we're going to make the call to
|
4 |
$request_url = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=".$term->name."&api_key=YOUR_API_KEY"; |
5 |
//Begin our curl resource
|
6 |
$ch = curl_init($request_url); |
7 |
//Put all the stuff from the page we called into a string
|
8 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
9 |
// Put that info into a nice output
|
10 |
$output = curl_exec($ch); |
11 |
// Sort out our memory
|
12 |
curl_close($ch); |
13 |
?>
|
Dies ist eine Standard-CURL-Funktion. Es fordert das Last.FM-Archiv für unseren Künstler an, druckt es in eine Curl-Ressource und gibt es dann gut aus, bevor es sich selbst schließt.
Aber natürlich haben wir immer noch nicht gesagt, wohin die Beschreibung des Künstlers gehen soll oder wie genau die Beschreibung zu finden ist. Machen wir das mit SimpleXML.
1 |
<!-- Here's where we're going to print information about our artist -->
|
2 |
<?php
|
3 |
//Tell our page where we're going to make the call to
|
4 |
$request_url = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=".$term->name."&api_key=YOUR_API_KEY"; |
5 |
//Begin our curl resource
|
6 |
$ch = curl_init($request_url); |
7 |
//Put all the stuff from the page we called into a string
|
8 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
9 |
// Put that info into a nice output
|
10 |
$output = curl_exec($ch); |
11 |
// Sort out our memory
|
12 |
curl_close($ch); |
13 |
|
14 |
//IMPORTANT: This is where we begin to tell how we want the output displayed
|
15 |
$xml = simplexml_load_string($output); |
16 |
//Here's where we tell the page the specific place that we want it to print information from
|
17 |
$info = $xml->artist->bio->summary; |
18 |
?>
|
19 |
<!-- Let's tell WordPress that we want to display that information here -->
|
20 |
<?php echo $info ?> |
Wir möchten nicht alles in der XML-Datei haben - wir möchten nur die Künstlerzusammenfassung erhalten, die eine Kurzversion der Biografie enthält.
Das macht dieses Bit: $info=$xml->artist->bio->summary;
Anschließend wird die Zusammenfassung einer Variablen namens $info zugewiesen, die wir überall auf unserer Vorlagenseite wiedergeben können, sodass wir Folgendes erhalten:



Abschluss
Herzliche Glückwünsche! Sie haben eine dynamisch generierte Künstlerseite für Ihre Lieblingsband erstellt!
Mit der Last.FM-API können Sie alle Arten von großartigen Dingen erledigen, einschließlich Links zu den Top 5, die von einem Künstler angehört wurden, Biobilder usw. Das Beste, was Sie tun können, ist, mit den API-Aufrufen herumzuspielen, die Sie können machen.
Wenn Sie lieber selbst mit Biobildern umgehen möchten, gibt es einige großartige Plugins. Am bemerkenswertesten ist das Plugin Taxonomy Images von Michael Fields, mit dem Sie auf einfache Weise benutzerdefinierte Bilder ohne Codierung zu Ihrer Taxonomie hinzufügen können. Wenn Sie sich für dieses Plugin entscheiden, lesen Sie in den häufig gestellten Fragen zu Michael nach, wie Sie es für Ihre Anforderungen verwenden können.