Ich habe eine Datenbanktabelle außerhalb von WordPress, für die ich Endpunkte erstellen muss. Ich habe eine Seite erstellt, /cars/
auf der ich mithilfe einer Seitenvorlage Links generieren möchte. Ich möchte, dass die URL wie folgt aussieht /cars/camaro/
( /cars/%model%/
). Ursprünglich dachte ich, ich könnte es mit Endpunkten machen, war mir aber nicht sicher, wie ich sie dynamisch machen sollte, basierend auf der aus der Modelltabelle gezogenen Schnecke. Ich war mir auch nicht sicher, ob es einfacher wäre, Permalink Structure-Tags zu verwenden, oder welches besser war.
Ich bin mir nicht einmal ganz sicher, wo ich anfangen soll. Ich habe zuvor "statische" Endpunkte erstellt, sodass ich eine Basis hatte, von der ich springen konnte, aber wenn ich zum request
Filter komme, bin ich mir nicht sicher, was ich tun soll.
/**
* Add endpoint to handle models
*/
function theme_endpoints() {
add_rewrite_endpoint( 'cars', 'EP_PAGES' ); // Since cars is our base
}
add_action( 'init', 'theme_endpoints' );
/**
* Filter request variables
* @param array $vars
* @return array $vars
*/
function theme_perma_requests( $vars ) {
if( isset( $vars['model'] ) ) {
$vars['model_template'] = true;
}
return $vars;
}
add_filter( 'request', 'theme_perma_requests' );
Ich meine, dies ermöglicht mir mein template_include (weshalb ich die model_template
Variable hinzugefügt habe ), aber die URL wird nicht neu geschrieben. Also fing ich an zu spielenadd_rewrite_rule()
/**
* Theme rewrite rules
*/
function theme_rewrite_rules() {
add_rewrite_rule( '^cars/([^/]*)/?$', 'index.php?page_id=8&model=$matches[0]', 'top' );
}
add_action( 'init', 'theme_rewrite_rules' );
Ich habe meine Permalinks geleert, aber die Umschreibungen scheinen nicht wirksam zu sein. Ich kann nur annehmen, dass etwas mit der Schreibweise der Regel nicht stimmt.
Benötige ich sowohl den Endpunkt als auch die Umschreiberegel oder nur eine der beiden? Gehe ich alles falsch? Wie kann ich die Permalink-Struktur von erreichen /cars/camaro/
?
add_rewrite_tag()
ist ein guter Ausgangspunkt.