Ich habe benutzerdefinierte Post-Typen Independet:benutzerdefinierte Post-Typen verknüpfen Hierarchie
- Kurs
- Lektion
So ein Kurs kann viel Lektion hat und eine Lektion in vielen Kursen verwendet werden. Es ist eine m: n-Beziehung.
Jetzt habe ich Inhalt, der nur auf der Lektionsseite sichtbar sein sollte, wenn es von einem bestimmten Kurs aus betrachtet wird.
Eigentlich ist die Link-Struktur wie folgt aus:
- Zum Kurs: example.org/my-first-course
- Ich sehe alle Lektionen, die im Zusammenhang mit diesem Kurs
- Click auf einer Lektion. Linkstruktur ist: example.org/great-lesson
Mein Problem in diesem Stadium ist, dass ich nicht weiß, von welchem Kurs der Lektion, die ich genannt.
Eines, was ich tun kann, ist, den Kurs-ID als GET-Parameter auf den Link zu befestigen: example.org/great-lesson/?course_id=123
Aber ich möchte einen Link haben mehr Struktur wie folgt aus: example.org/my-first-course/great-lesson
Wie kann ich das tun?
. :: UPDATE: LÖSUNG ::.
Hier ist meine Lösung, vielleicht wird es jemandem helfen.
Wenn Sie "add_rewrite_rule" verwenden, vergessen Sie nicht, den Slug (slug-custom-post-type) für Ihren benutzerdefinierten Post-Typ und die Abfrage var (cpt-query-var) zu ändern.
Ich habe versucht, index.php?name=$matches[1]
zu verwenden, aber es wird zum benutzerdefinierten Beitragstyp umleiten und alle anderen Informationen in der URL werden verloren gehen. Daher ist es wichtig, stattdessen den benutzerdefinierten Abfragetyp var zu verwenden.
Um den 'Kurs' greifen Sie auf die get_query_var Funktion verwenden: echo get_query_var('course', '');
function my_rewrite_rules() {
add_rewrite_rule('^slug-custom-post-type/([^/]*)/?', 'index.php?cpt-query-var=$matches[1]&course=$matches[2]', 'top');
}
add_action('init', 'my_rewrite_rules');
function my_query_vars($qvars) {
$qvars[] = 'course';
return $qvars;
}
add_filter('query_vars', 'my_query_vars');
Danke Rohan! Ich überprüfe die Rewrite-API. Aber wenn ich es wie in Ihrem Beispiel mache, dann füge ich jeder Lektion eine Rewrite-Regel hinzu. Es gibt über 700 Lektionen ... – mcswizz
So können Sie Lektion als statisch verwenden und versuchen Regex '^ Lektion/([^ /] *)/([^ /] *)' und übergeben Sie es auf 'index.php? Page_id = 1 & lection = $ matches [1] & course = $ mathes [2] 'beim Durchsuchen eines Kurses. Und wenn Sie nur die Lektion durchsuchen, entfernen Sie den zweiten Parameter. –