Erstellen benutzerdefinierter Post-Typ und Taxonomie-Archive und hübsche URLs

Ich habe einen benutzerdefinierten Post-Typ, Local Pages und zwei verschiedene Taxonomien erstellt: Locations und Services .

Ab sofort funktioniert der benutzerdefinierte Post-Typ. Allerdings sind die URLs nicht schön. Sie sehen ungefähr so ​​aus: http://domain.com/?localpage=%post_name%

Im Idealfall möchte ich ein Archiv für den Post-Typ und die Taxonomien erstellen.

Zum Beispiel wäre das Hauptarchiv etwas wie http://domain.com/localpage , das alle Beiträge in diesem Beitragstyp auflisten würde. Ich nehme an, dass dies eine eigene Archivvorlage erfordern würde.

Ich möchte auch eine Kategorielistenseite für meine Taxonomien erstellen, wo die URL etwas wie http://domain.com/localpage/locations und http://domain.com/localpage/services . Beide Seiten würden im Wesentlichen alle Kategorien oder Elemente der bestimmten Taxonomie auflisten. Filtern Sie die Links auf jeder dieser Seiten zur nächsten Taxonomie.

Ein Beispiel dafür, wie dies funktionieren würde, wäre:

Standorte: Abbott, Kalifornien; Aberdeen, CA; Kabel, CA; Erdbeere, CA; Zuver, Kalifornien

Dienstleistungen: Aluminium verstellbare Patio Abdeckungen; Isolierte Patio-Abdeckungen; Store Front Markisen; Sunroom-Gehäuse.

Wenn Sie http://domain.com/localpage/locations besuchen, werden die oben aufgeführten Standorte angezeigt. Wenn Sie auf einen bestimmten Standort klicken, werden Sie an eine Adresse wie http://domain.com/localpage/%location_name%/services gesendet, in der alle Services für diesen Standort aufgelistet werden. Wenn Sie auf einen Dienst klicken, werden Sie unter http://domain.com/localpage/%location_name%/%service_name%/%post_name% auf die Post weitergeleitet.

Wie kann ich das erreichen und welche Seitenvorlagen (archive.php, single.php, etc) werden benötigt?

Hier ist der Code, den ich in meiner ‘functions.php’ verwende, um den benutzerdefinierten Posttyp und die Taxonomien zu erstellen.

 ///////////////////////////////////////////////// // Local Page Custom Post Type ///////////////////////////////////////////////// function create_local_pages() { $labels = array( 'name' => _x( 'Local Pages', 'post type general name' ), // Tip: _x('') is used for localization 'singular_name' => _x( 'Local Page', 'post type singular name' ), 'add_new' => _x( 'Add New', 'Local Page' ), 'add_new_item' => __( 'Add New Local Page' ), 'edit_item' => __( 'Edit Local Page' ), 'new_item' => __( 'New Local Page' ), 'view_item' => __( 'View Local Page' ), 'search_items' => __( 'Search Local Pages' ), 'not_found' => __( 'No Local Pages found' ), 'not_found_in_trash' => __( 'No Local Pages found in Trash' ), 'parent_item_colon' => '' ); $annoucement_args = array( 'labels' =>$labels, 'singular_label' => __('Local Page'), 'public' => true, 'show_ui' => true, 'menu_position' => 5, 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => false, 'supports' => array('title', 'editor'), 'has_archive' => true, ); register_post_type('localpage', $annoucement_args); } add_action('init', 'create_local_pages'); ///////////////////////////////////////////////// // Local Page Taxonomies ///////////////////////////////////////////////// add_action( 'init', 'build_locations', 0 ); function build_locations() { register_taxonomy( 'location', 'localpage', array( 'hierarchical' => true, 'label' => 'Locations', 'query_var' => true, 'rewrite' => true ) ); } add_action( 'init', 'build_services', 0 ); function build_services() { register_taxonomy( 'services', 'localpage', array( 'hierarchical' => true, 'label' => 'Services', 'query_var' => true, 'rewrite' => true ) ); } add_action( 'init', 'build_keywords', 0 ); function build_keywords() { register_taxonomy( 'keyword', 'localpage', array( 'hierarchical' => true, 'label' => 'Keywords', 'query_var' => true, 'rewrite' => true ) ); } 

Jede Hilfe würde sehr geschätzt werden.

Zusätzliche Information

In dem bereitgestellten Beispiel sind die lokalen Seiten Seiten innerhalb der Site, die sich auf einen geografischen Standort und einen einzelnen bestimmten Service beziehen. Daher meine Referenz auf sie als “lokale Seiten” für den benutzerdefinierten Beitragstyp. Sie könnten für diesen Zweck anders benannt werden.

Aus meiner Sicht ist dies ein SEO-Spiel in seinem Namen. Der größte Teil des Inhalts ist identisch mit Ausnahme von einigen Schlüsselwort- und Ortsänderungen im gesamten Inhalt. Nicht etwas, das ich wirklich mag, aber ich versuche zu liefern, was der Kunde verlangt hat.

Solutions Collecting From Web of "Erstellen benutzerdefinierter Post-Typ und Taxonomie-Archive und hübsche URLs"

Um Permalinks wie http://example.com/localpage/%post_name%/ zu erreichen, müssen Sie beim Registrieren des benutzerdefinierten rewrite Argument rewrite setzen:

 $annoucement_args = array( ... 'rewrite' => array( 'with_front' => false ), ... ); 

Ich denke nicht, dass die Verwendung von benutzerdefinierten Taxonomien hier die beste Idee ist. Warum verwenden Sie keine benutzerdefinierten Metaboxen? In diesem WP Explorer Artikel finden Sie eine Anleitung.