Erstellen von Seiten dienen auch als Taxonomien? Oder geben Sie ganze Seiten Taxonomien?

Ich betreibe einen Videospiel-Nachrichtenblog. Wenn meine Mitarbeiter einen Nachrichtenartikel oder eine Rezension verfassen, möchte ich, dass sie diesen Beitrag einem Spiel “zuweisen” können (falls zutreffend), damit ich dann die Call-Informationen zu diesem Spiel (Titel, Boxart, Herausgeber, Veröffentlichungsdatum usw.) und in der Seitenleiste anzuzeigen. Ich dachte, dies könnte eine benutzerdefinierte Taxonomie beinhalten, so dass sie genau wie Tags einem Post zugewiesen werden kann.

Aber dann wurde mir klar, dass ich auch wollte, dass diese Spiele ganze Seiten voller Informationen haben. Ich dachte zuerst, einen benutzerdefinierten Post-Typ für Seiten zu erstellen, und mit benutzerdefinierten Feldern könnte ich die Box-Art des Spiels aufrufen, sein Veröffentlichungsdatum anzeigen, alle Beiträge oder Rezensionen zu diesem Spiel anzeigen und sie mit kurzen Auszügen anzeigen und benutzerdefinierte Taxonomien verwenden Zeige den Publisher, den Entwickler usw. des Spiels an …

Und dann wurde mir klar, dass ich auch wollte, dass diese Verlage und Entwickler ihre eigenen Seiten haben. Beschreibung, Ort, Links zu Artikeln, an denen sie beteiligt sind, Listen mit allen ihnen zugewiesenen Spielen … und so weiter.

Keine von diesen kann Kinderseiten der anderen sein, da Entwickler nicht immer permanent an einen bestimmten Verlag gebunden sind, Spiele werden manchmal von mehreren Parteien mitentwickelt, etc.

Ich bin in einer Gurke und kann nicht herausfinden, wie ich meine Website neu organisieren soll. Ich möchte wirklich alle neuen Spielzeuge in WordPress verwenden, um die Website zu erstellen, die ich möchte, anstatt WP einzuschränken, was ich tun kann. Irgendwelche Vorschläge? Ich habe seit Tagen brainstorming versucht, etwas herauszufinden. Irgendwelche Vorschläge würden geschätzt werden.

Solutions Collecting From Web of "Erstellen von Seiten dienen auch als Taxonomien? Oder geben Sie ganze Seiten Taxonomien?"

Es gibt ein paar Möglichkeiten, um damit zu gehen. Ich habe tatsächlich denselben process durchlaufen wie du. Es wäre einfach, wenn Sie in WordPress Posts oder benutzerdefinierte Post-Typen miteinander verknüpfen könnten, aber stattdessen muss der Hacker von WordPress-Entwicklern auftreten!

Die Lösung, mit der ich in dem Plugin arbeitete, an dem ich arbeite, ist ein bisschen hacky, aber es funktioniert für mich. Grundsätzlich wollte ich in meinem Plugin einen Post-Typ namens series haben, der Informationen zu einer bestimmten TV-Serie enthält, einen Post-Typ für Episoden und einen anderen Post-Typ für DVD- und Blu-ray-Veröffentlichungen. Ich wollte, dass sowohl die Episoden- als auch die Veröffentlichungs-Post-Typen auf den Serien-Typ verweisen, aus dem sie stammen. Wenn ich also eine einzelne Serien-Post-Seite erstelle, könnte sie die Episoden und Releases sowie die Serien-Informationen auflisten.

Meine Lösung beinhaltet ein benutzerdefiniertes Feld, das die Objekt-ID der Serie enthält. Der erste Weg, dies zu erreichen, bestand darin, eine Metabox zu erstellen, die eine Auswahlbox aller Posts der Typenreihen enthielt:

public function get_select_array($post_type) { global $wpdb; $query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'publish' ORDER BY post_title"; $results = $wpdb->get_results($query, OBJECT); $series = array(); foreach ($results as $result) { $series[] = array('name' => $result->post_title, 'value' => $result->ID); } return $series; } 

Die function get_select_array () übernimmt grundsätzlich einen benutzerdefinierten Post-Typ und gibt die Post-Titel und IDs aller in einem Array veröffentlichten aus. Ich verwende dann dieses Array, um ein Auswahlfeld zu füllen. In meinem Plugin verwende ich die Metabox- Erstellungsklasse, die von Rilwis erstellt wurde, aber ich poste etwas Code, den Sie verwenden können (der Code wird aus dem Rilwis-Code angepasst):

 add_meta_box('parent_series', 'Series', 'show_series_metabox', 'episode', 'side', 'high'); //add a side metabox function show_series_metabox() { global $post; echo ''; //nonce $series = get_select_array('series'); //get post titles and ID's of post type 'series $meta = get_post_meta($post->ID, 'parent_series', true); //get the meta value of the custom field echo ''; } add_action('save_post', 'save_series_metabox'); function save_series_metabox() { $real_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : NULL ; //get post id $old = get_post_meta($real_post_id, 'parent_series', true); //get old stored meta value $new = $_POST['parent_series']; //new meta value if ($new && $new != $old) { //saving or deleting value update_post_meta($real_post_id, 'parent_series', $new); } elseif ('' == $new && $old) { delete_post_meta($real_post_id, 'parent_series', $old); } } 

Dadurch wird eine Metabox mit einer Auswahl hinzugefügt, die alle verfügbaren Serien auflistet. Wenn der Post gespeichert wird, wird die ID dieser Serie in einem benutzerdefinierten Feld mit dem Namen ‘Elternserie’ gespeichert. Sobald dies erledigt ist, können Sie diese ID aufrufen und sie verwenden, um die Serieninformationen über eine benutzerdefinierte Abfrage aufzurufen. Oder es ist möglich, das Gegenteil zu tun: Auf der Serienseite führen Sie eine Abfrage für alle Folgenseiten durch, die in ihren benutzerdefinierten Feldern / Metadaten denselben Wert haben.

Und da hast du es. Mit diesem Code können Sie Beiträge eines Typs mit denen eines anderen Typs verknüpfen, so dass sie wie Pseudo-Taxonomien funktionieren. Ich habe den Code ziemlich schnell bearbeitet. Wenn Sie Fehler oder Fehler finden, lassen Sie es mich wissen. Wenn es bessere Möglichkeiten gibt, lass es mich wissen 🙂