it-swarm.com.de

Ändern von URL-Strukturen in benutzerdefinierten Beitragstypen und Taxonomien oder Begriffen

Mir ist bewusst, dass es mehrere Posts gibt, die das Thema Anpassen der Permalink-URL-Struktur von benutzerdefinierten Post-Typen , benutzerdefinierten Taxonomien und Taxonomiebegriffen behandeln . Keiner von ihnen ist jedoch wirklich klar, funktioniert nicht richtig oder verursacht an anderer Stelle Probleme.


Hier sind ein paar Links, die bereits "Art" URL umschreiben .

  1. So erstellen Sie eine Permalink-Struktur mit benutzerdefinierten Taxonomien und benutzerdefinierten Beitragstypen wie Basisname/Elternsteuer/Kindersteuer/benutzerdefinierter Beitragstypname
  2. Benutzerdefinierte Beitragstypen, Taxonomien und Permalinks
  3. Benutzerdefinierte Post-Typ und Taxonomie umschreiben Strukturen mischen?

Ich möchte eine Permalink-URL-Struktur erstellen.

  • Name des Beitragstyps: cars
  • Taxonomiename: Händler
  • Begriff Name: honda
  • Beitragstitel: 123 Hot Rod Lane

Beispielaufbau der idealen Permalink-URL-Struktur:

Generische Permalink-Struktur:

domain.com/post-type-name/taxonomy-name/term-name/post-title/

Spezifischere Permalink-Struktur:

domain.com/cars/dealers/honda/123-hot-rod-lane/

  • /cars/ muss als Archivauflistung für jeden Beitrag im Beitragstyp verfügbar sein.
  • /cars/dealers/ muss als Archivliste für jeden in der Taxonomie erstellten Beitrag zugänglich sein.
  • /cars/dealers/honda/ muss als Archivauflistung aller Posts in diesem Taxonomiebegriff zugänglich sein.
  • /cars/dealers/honda/123-hot-rod-lane/ muss als einzelne Ansicht des Postens zugänglich sein, die im benutzerdefinierten Postentyp des Autos erstellt wurde.

Um ganz klar zu sein, niemand macht unnötige Arbeit, während er auf diese Frage antwortet. Ich brauche nichts anderes als nur die richtigen Umschreiberegeln für meinen Beitragstyp, meine Taxonomie und meine Begriffe hinzuzufügen. Diese Frage bezieht sich direkt auf Umschreiben der Permalink-URL und NICHT auf die Auflistung von Posts oder Archiven. Ich muss nur sicherstellen, dass WordPress sie richtig erkennt, während ich bedingte Aufrufe wie is_post_type_archive() oder is_tax() oder is_singular() usw. verwende.

Ich habe es mehrfach versucht, aus zahlreichen Fragen/Antworten auf dieser Seite. Nichts scheint zu funktionieren.

Hier ist mein registrierter benutzerdefinierter Beitragstyp und die registrierte benutzerdefinierte Taxonomie:

    public function register_custom_data(){
        /* Register a post type for Cars. */
        $labels = array(
            'name' => _x('Cars', 'post type general name'),
            'singular_name' => _x('Car', 'post type singular name'),
            'add_new' => _x('Add New Car', 'Car'),
            'add_new_item' => __('Add New Car'),
            'edit_item' => __('Edit Car'),
            'new_item' => __('New Car'),
            'all_items' => __('All Cars'),
            'view_item' => __('View Car'),
            'search_items' => __('Search Cars'),
            'not_found' =>  __('No Cars found'),
            'not_found_in_trash' => __('No Cars found in Trash'), 
            'parent_item_colon' => '',
            'menu_name' => __('Cars')
        );
        $args = array(
            'labels' => $labels,
            'public' => true,
            'publicly_queryable' => true,
            'show_ui' => true, 
            'show_in_menu' => false, 
            'show_in_nav_menus' => false,
            'can_export' => true,
            'query_var' => true,
            'rewrite' => true,
            'menu_icon' => NULL,
            'capability_type' => 'post',
            'has_archive' => true, 
            'hierarchical' => false,
            'menu_position' => NULL,
            'supports' => array(
                'title', 
                'editor', 
                'thumbnail' 
            ),
            'rewrite' => array(
                'slug' => 'cars', 
                'with_front' => true
            )
        ); 
        register_post_type('mbe_cars', $args);

        /* Car Dealers */
        $labels = array(
            'name' => _x('Dealers', 'taxonomy general name'),
            'singular_name' => _x('Dealer', 'taxonomy singular name'),
            'search_items' =>  __('Search Dealers'),
            'all_items' => __('All Dealers'),
            'parent_item' => __('Parent Dealer'),
            'parent_item_colon' => __('Parent Dealer:'),
            'edit_item' => __('Edit Dealer'), 
            'update_item' => __('Update Dealer'),
            'add_new_item' => __('Add New Dealer'),
            'new_item_name' => __('New Dealer Name'),
            'menu_name' => __('Dealers')
        ); 

        $args = array(
            'hierarchical' => true,
            'labels' => $labels,
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => array(
                'slug' => 'dealers',
                'hierarchical' => true
            )
        );

        register_taxonomy('mbe_car_dealers', 'mbe_cars', $args);

        /* Update urls. */
        flush_rewrite_rules();
    }
4
Michael Ecklund

Ich möchte dies nicht als Antwort einreichen, es ist jedoch ein erstaunlicher kleiner Ausschnitt, der Ihre Taxonomien und Begriffe verknüpft.

add_filter('request', 'add_tags_and_categories');  
  function add_tags_and_categories($q) {
    if (isset($q['your_term_or_tax']) || isset($q['category_name'])) {
    $q['post_type'] = 'your_custom_post';   
      return $q;
  }  
return $q;
}

Ich hoffe das kann dir auf deinem Weg zu einer Antwort weiterhelfen. Ich verwende es normalerweise, um meine benutzerdefinierten Beitragstypen mit den/tags/&/category/eingebauten zu verknüpfen:

add_filter('request', 'add_tags_and_categories');  
 function add_tags_and_categories($q) {
   if (isset($q['tag']) || isset($q['category_name'])) {
     $q['post_type'] = get_post_types();

            return $q;
   }

 return $q;
}

Prost!

2
David