it-swarm.com.de

Benutzerdefinierter Permalink mit dynamischer Taxonomie für benutzerdefinierten Post-Typ - Funktioniert, unterbricht jedoch andere Permalinks

Mein benutzerdefinierter Permalink mit dynamischer Taxonomie funktioniert für meinen benutzerdefinierten Beitragstyp. Es unterbricht jedoch alle meine anderen Permalinks. Sie zeigen einen 404-Fehler im Inhaltsbereich an (Kopfzeile und Seitenleiste werden weiterhin angezeigt).

Ich habe den folgenden Code verwendet, um die dynamischen Permalinks für den benutzerdefinierten Beitragstyp zu erstellen:

/*Adds Custom Permalinks for Course Segments*/
function custom_post_link($post_link, $id = 0)
{
  $post = get_post($id);

  if(!is_object($post) || $post->post_type != 'course-segment')
  {
    return $post_link;
  }
  $course = 'course-segment';

  if($terms = wp_get_object_terms($post->ID, 'course'))
  {
    $course = $terms[0]->slug;
  }
  return str_replace('%course%', $course, $post_link);

  return $post_link;
}

add_filter('post_type_link', 'custom_post_link', 1, 3);

Ich habe meiner Funktion create_post_type() auch Folgendes hinzugefügt:

'rewrite' => array('slug' => '%course%')

Ich habe den Code dazu von: https://stackoverflow.com/questions/7723457/wordpress-custom-type-permalink-containing-taxonomy-slug .

Indem ich einfach die folgenden zwei Codezeilen auskommentiere, funktionieren meine alten Permalinks, aber meine dynamischen Permalinks natürlich nicht:

//add_filter('post_type_link', 'custom_post_link', 1, 3);


//'rewrite' => array('slug' => '%course%')

In Settings sind meine Permalinks auf %postname% gesetzt.

Über Gedanken oder Einsichten, wie ich meine normalen Permalinks und meine dynamischen benutzerdefinierten Posttyp-Permalinks zum Laufen bringen kann, würde ich mich sehr freuen! -Kennzeichen

2
Mark Rummel

Wenn Sie WordPress 3.0.1 oder höher ausführen, liegt Ihr Problem meines Erachtens an der Filterdeklaration und den Funktionsargumenten von 'post_type_link'.

Wenn der Filter 'post_type_link' angewendet wird, werden die folgenden 4 Argumente übergeben:

apply_filters('post_type_link', $post_link, $post, $leavename, $sample);

Ihre Funktion akzeptiert jedoch $ post_link und $ id.

Versuchen Sie die folgenden Anpassungen:

function custom_post_link( $post_link, $post ) {

    if ( $post->post_type != 'course-segment')
        return $post_link;

    $course = 'course-segment';
    if( $terms = wp_get_object_terms( $post->ID, 'course' ) )
        $course = $terms[0]->slug;

    return str_replace( '%course%', $course, $post_link );

}
add_filter( 'post_type_link', 'custom_post_link', 1, 2 );
2
Rachel Carden

Rachel hat recht. Das Problem ist nicht der Filter. Wenn Sie es vollständig entfernen, tritt das Problem weiterhin auf, da% taxonomy% (mit den Prozent-Symbolen) als benutzerdefinierter Pfostentyp verwendet wird.

Ich habe versucht, ein Non-Tag (ohne die Prozentzeichen) zu verwenden, und alles andere funktioniert, aber dann kann ich es nicht vollständig durch die Taxonomien ersetzen - d. H., Es wird nicht vom gleichen Filter abgefangen.

Der Austausch findet also auf eine andere Art statt, die ich nicht verstehen kann.

Ich kann nicht erreichen, dass die CPTs die Taxonomie im Permalink UND die übrigen Posts/Seiten gleichzeitig anzeigen. Es ist der eine oder andere.

Ich denke, es hat etwas damit zu tun, dass wp nach taxo/postname BEFORE page/subpage sucht oder nicht beide versucht, einen 404 zurückzugeben, aber es ist zu weit fortgeschritten für mich.

DIESES FUNKTIONIERT TEILWEISE (nur Beiträge)

global $wp_rewrite;
$wp_rewrite->extra_permastructs['listing'][0] = "%listing_type%/%postname%";
    add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&name=$matches[2]', 'bottom');
    add_rewrite_rule("([^/]+)/([^/]+)/?$", 'index.php?post_type=listing&listing_type=$matches[1]&page=$matches[2]', 'bottom');

Der obige Code (innerhalb der CPT-Definitionsfunktion)reparierte nur die Posts, aber die Seiten (wofür die zweite Zeile add_rewrite_rule vorgesehen war) sind immer noch fehlerhaft.

Meine Daten sind hier.

Dynamische Taxonomie in Permalink alle anderen Beiträge NICHT GEFUNDEN? Leider habe ich diese Frage vorher nicht gefunden oder meine nicht gepostet.

Jede Idee wird geschätzt

0
sergio