Ich habe eine benutzerdefinierte Seite, die eine Vorlage namens "Stores" http://example.com/stores/
verwendet. Diese Seite enthält eine Liste von Bundesstaaten und/oder Unternehmen als Kategorien. Für dieses System habe ich einen benutzerdefinierten Beitragstyp "Geschäft", der einer einzelnen Kategorie (entweder Staat oder Firma) zugeordnet werden kann.
Jedes Geschäft ist keine bestimmte Seite, sondern Kontaktinformationen, die in einer Art Telefonbuch-Layout für Bundesstaaten/Unternehmen angezeigt werden.
Das Problem, das ich jetzt habe, ist, wie kann ich zulassen, dass meine "Stores" -Vorlage URL-Anfragen von http://example.com/stores/california/
akzeptiert (ohne 404-Fehler auszulösen)?
California
ist in diesem Sinne keine Seite, sondern eine Abfrage. Ich möchte auch nicht manuell eine Seite für jede dieser Kategorien erstellen (da diese aus der Datenbank abgerufen wird und automatisch). Ich könnte ?state=california
für diesen Zweck verwenden, aber ich würde gerne erfahren, wie ich diese URL in WordPress zulasse.
Ist der richtige Weg, um die htaccess-Datei manuell zu bearbeiten? Wäre das nicht überschrieben, wenn Sie die Permalink-Struktur bearbeiten? Wie würde ich den htaccess formatieren?
Füge eine neue Seite hinzu und gib ihr den Slug stores
add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars){
$vars[] = 'state';
return $vars;
}
Dadurch wird Ihre Anfrage an Ihre stores
Seite weitergeleitet.
add_rewrite_rule('^stores/([^/]*)/?','index.php?post_type=page&name=stores&state=$matches[1]','top');
Sie können wie folgt auf Ihre Statusvariable zugreifen:
$state = get_query_var('state');
Besuchen Sie Einstellungen-> Permalinks, um Ihre Permalinks zu löschen und Ihre Umschreiberegel dem Stapel hinzuzufügen.
Ich habe die Antwort auf der Wordpress-Website gefunden und die Lösung getestet: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule#Using_Custom_Templates_with_custom_querystring
Erstellen Sie eine Seitenvorlage für Stores und wenden Sie diese auf eine Seite an.
$stores = get_query_var('stores');
Fügen Sie in Ihrer functions.php ein Rewrite-Tag hinzu, mit dem Wordpress nach dem entsprechenden Tag suchen kann
function custom_rewrite_tag() {
add_rewrite_tag('%stores%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);
Um nun die URL zu formatieren und mit den vars auf die index.php zu verweisen, geben Sie Folgendes in Ihre functions.php ein. Hinweis: Sie müssen die page_id auf die page_id der Stores-Seite aktualisieren (in diesem Beispiel ist es 12).
function custom_rewrite_rule() {
add_rewrite_rule('^stores/([^/]*)/?','index.php?page_id=12&stores=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);
Von dort aus können Sie nach/stores/south-dakota/navigieren. Die Variable $ stores in Ihrer Seitenvorlage lautet "south-dakota".
Ich habe auch versucht, dasselbe zu tun und habe es schließlich auf folgende Weise getan.
Fügen Sie den folgenden Code zu Ihrer functions.php in Ihrem Theme hinzu.
add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars){
$vars[] = 'state';
return $vars;
}
add_rewrite_rule('^stores/([^/]+)/?$','index.php?pagename=stores&state=$matches[1]','top');
Rufen Sie in Ihrer Vorlage die Abfragevariable auf
$state = get_query_var('state');