2016-04-17 21 views
1

Mein Projekt ist ein Verzeichnis von Brancheneinträgen.Nicht eindeutige Begriff Slugs oder irgendetwas anderes, das ich verwenden kann, um bestimmte Seiten und Permalinks zu erstellen?

Individuelle Auflistung URL sieht so einfach aus wie domain.com/five-star-cars - etwas, das WordPress aus der Box handhabt.

Aber ich habe ein Problem beim Bohren in regionalen Archiven. Wir brauchen eine spezifische URL-Struktur für diese. Zum Beispiel, wenn wir alle Einträge in Ohio zeigen möchten, benötigen wir domain.com/ohio - auch einfach.

Wenn wir jedoch alle Angebote in Cleveland, Ohio und Cleveland, Nevada zeigen wollen - wir wollen, dies zu tun:

  • domain.com/cleveland/oh
  • domain.com/

Also habe ich eine CPT "Listings" und eine benutzerdefinierte Taxonomie "Location" erstellt. Ich fügte Ohio und Nevada als Elternbegriffe und Cleveland als Kinder zu beiden hinzu.

Hier ist das Problem: die Schnecke des ersten Cleveland ist domain.com/location/ohio/cleveland/ aber die 2. wurde man domain.com/location/nevada/cleveland-nevada/

Ich habe herausgefunden, dass die Begriffe "Slugs" eindeutig sein müssen, also ist das ein Problem - ich kann keine Terminus-Slugs verwenden, um URLs zu erstellen.

Was ich als nächstes getan habe, ist das Speichern von Staat und Stadt als benutzerdefinierte Feldwerte in jedem Eintrag. Jetzt kann ich diese Werte verwenden (die im Gegensatz Begriff Schnecken, müssen nicht eindeutig sein) als globale Variablen über etwas wie folgt aus:

function loc_global_vars() { 
global $wp_query; 
$postid = $wp_query->post->ID; 
global $loc_vars; 
$loc_vars = array(
    'state'  => get_post_meta($postid, 'state', true), 
    'city'  => get_post_meta($postid, 'city', true), 
); 
} 
add_action('parse_query', 'loc_global_vars'); 

Aber jetzt bin ich stecken: Was sind die nächsten Schritte?

Q1: Wie baue ich Archivseiten und Permalinks mit diesen Variablen?

Q2: Wie erstelle ich Vorlagen, damit ich sie für jeden Archivtyp anpassen kann?

Oder ist etwas offensichtlich, das ich vermisst habe und ich sehe einfach in eine falsche Richtung? Also, allgemein:

Q3: Gibt es eine bessere Möglichkeit, dies zu nähern?

Antwort

1

Mithilfe der Rewrite API können Sie Ihre Post-Meta zum Erstellen von URLs verwenden.

1) Fügen Sie Ihren Beitrag meta Begriffe über add_rewrite_tag()

2) Stellen Sie eine add_rewrite_rule('([^/]+)/?','index.php?state=$matches[1]&city=$matches[2]','top');

3) Spülen Sie die Regeln neu schreiben, nachdem Sie Ihren Haken gesetzt, zum Beispiel durch eine permalinks @/wp-admin/options-permalink.php Einstellung zu speichern.

Es gibt eine aufzuschreiben here.

Q3 Adressierung, könnten Sie Cortex, ein WP-Routing-System.

Oder weniger unelegant Lösung schaffen, warum nicht zwei benutzerdefinierte Post-Typen, ein für Städte und eine für Regionen und eine eigene Steuer der Städte auf der Region Seiten zu setzen?

+0

Keine Städte auf Staatsseiten, nur Auflistungen aus dem ganzen Staat und landesspezifische Beschreibung an der Spitze, wie http://www.familydaysout.com/kids-things-to-do-usa/ohio – bugnumber9

+1

@ spnzr Sie sollten Ihre Antwort mit Beispielen klären. Denn Referenzen sind oft schwer zu verfolgen für andere Leute, die nicht herausgefunden haben, wie es funktioniert. – MinhTri