it-swarm.com.de

Benutzerdefinierter Permalink mit Taxonomiebedingungen für Kinder

Dies mag an andere Fragen erinnern, aber ich poste meine eigenen, da ich keine schlüssige Antwort gefunden habe, die für mich funktioniert hat.

Was du wissen musst

Ich habe einen benutzerdefinierten Beitragstyp (Produkte) mit einer benutzerdefinierten Taxonomie (Sammlungen). Meine Sammlungstaxonomie ist hierarchisch. Zum Beispiel habe ich eine Elternsammlung (Badezimmer), die eine gute Anzahl von Untersammlungen haben wird.

Was ich versuche zu tun

Ich versuche, Permalinks für meine Produkte zu erhalten, die beispielsweise sowohl die übergeordnete als auch die untergeordnete Sammlung enthalten

 http://<domain>/products/bathroom/collection-1/postname

Was ich versucht habe

Grundsätzlich habe ich bei der Registrierung meines CPT und meiner Taxonomie sowie des Hooks 'post_type_link' mit dem Parameter rewrite rumgespielt.

Ich habe es geschafft,teilweisezum Laufen zu bringen, indem ich nur die übergeordnete Sammlung im Permalink angezeigt habe.

Jede Hilfe wäre sehr dankbar, danke.

Außerdem ist meine Permalink-Struktur: /% category% /% postname% /

Ein Teil meines Codes

CPT registrieren/Taxonomie

 register_taxonomy( 'collection', array(  ), array(
      'label' => 'collections',
      'public' => TRUE,
      'show_ui' => TRUE,
      'hierarchical' => TRUE,
      'query_var' => 'collections',
      'rewrite' => TRUE
 ));

 register_post_type( 'product', array(
      'label' => 'products',
      'public' => TRUE,
      'publicly_queryable' => TRUE,
      'show_ui' => TRUE,
      'show_in_menu' => TRUE,
      'taxonomies' => array( 'collection' ),
      'supports' => array( 'title', 'editor', 'author', 'custom-fields' ),
      'rewrite' => array( 'slug' => 'products/%collection%', 'with_front' => false, 'hierarchical' => true )
 ));

flush_rewrite_rules();

Verbindungshaken vom Post-Typ

 if( strpos( $permalink, '%collection%' ) === FALSE )
      return $permalink;

 $terms = wp_get_object_terms( $post->ID, 'collection' );
 $tax_slug = "";

 if( empty( $terms[0]->parent ) )
 {
      $tax_slug = $terms[0]->slug;// . "/" . $terms[1]-> slug;
      //Second part 404's my permalinks, so commented out
 }
 else
 {
      $tax_slug = $terms[1]->slug;// . "/" . $terms[0]-> slug;
      //Second part 404's my permalinks, so commented out
 }

 $permalink = str_replace( '%collection%', $tax_slug, $permalink );

 return $permalink;
1
Shane

Ich kann deine Frage beantworten! Ich selbst hatte genau das gleiche Problem und habe es heute herausgefunden, sodass ich genau weiß, was Sie tun müssen.

Ich gebe sehr detaillierte Anweisungen und Code auf meine eigene Frage, also schau dort nach, ob es das Problem für dich löst. Lassen Sie mich wissen, wie es geht oder wenn Sie weitere Fragen haben.

0
Jeff