Entfernen Sie den Taxonomie-Block, wenn Sie keine Taxonomie mit benutzerdefinierten Post-Typen zuweisen

Ich habe ein benutzerdefiniertes Post-Typ-Plugin erstellt, das, wenn der Benutzer den Beitrag einer Taxonomie zuweist (in der Site als “Klassifizierung” bezeichnet), dem URL-Slug hinzugefügt wird.

Im Grunde wird also gerendert: site.com/data/{classification}/{page-title}

Ich bin mir jedoch nicht sicher, wie ich die Taxonomie (Klassifizierung) aus dem Slug entfernen kann, wenn der Benutzer keinen auswählt. Mein Code ist unten:

function classification_permalink($permalink, $post_id, $leavename) { if (strpos($permalink, '%classification%') === FALSE) return $permalink; // Get post $post = get_post($post_id); if (!$post) return $permalink; // Get taxonomy terms $terms = wp_get_object_terms($post->ID, 'classification'); if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug; else $taxonomy_slug = 'no-classification'; return str_replace('%classification%', $taxonomy_slug, $permalink); 

Offensichtlich die else $taxonomy_slug = 'no-classification'; ist das, was der Slug standardmäßig ist, wenn eine Taxonomie nicht gewählt wird.

Aber wie würde ich diese Zeile bearbeiten, damit der Slug, wenn keine Taxonomie zugewiesen ist, zum Stammverzeichnis zurückkehrt, so dass er lesen würde: site.com/data/{page-title}?

Das vollständige Plugin ist auf meinem GitHub: https://github.com/tgelles/dr12-post-types

Solutions Collecting From Web of "Entfernen Sie den Taxonomie-Block, wenn Sie keine Taxonomie mit benutzerdefinierten Post-Typen zuweisen"

Der post_type_link Filter ist verantwortlich für die Änderung der Permalinks, die ausgegeben werden, aber er ist nicht verbunden, um eingehende Anfragen für diese Permalinks aufzulösen. Sie müssen also Ihre function ändern, um die richtigen Links auszugeben, aber auch eine Rewrite-Regel hinzufügen, damit WordPress weiß, was zu tun ist, wenn diese Seiten angefordert werden.

Dies ist alles noch nicht getestet, aber von Anfang an könnten Sie den Klassifizierungs-Slug modifizieren, um einen abschließenden Schrägstrich hinzuzufügen:

 $taxonomy_slug = $terms[0]->slug . '/'; 

Ändern Sie dann den Fall, in dem kein Klassifikationsfall vorliegt, als leere Zeichenfolge:

 else $taxonomy_slug = ''; 

Ersetzen Sie dann das Klassifizierungs-Tag und den abschließenden Schrägstrich:

 return str_replace('%classification%/', $taxonomy_slug, $permalink); 

Um diese Anfragen ohne Klassifizierung zu bearbeiten, fügen Sie eine weitere Rewrite-Regel für init :

 add_rewrite_rule( 'data/([^/]+)/?$', 'index.php?dr12-documentation=$matches[1]', 'top' );