it-swarm.com.de

Wie entferne ich ein Word aus einer URL in WordPress mit .htaccess?

Auf der Site, die ich gerade baue, gibt es einen Post-Typ namens "Focus". Da sie url müssen, um wie www.mysite.com/focus/page-post-name zu sein, habe ich den Beitragstyp slug als "focus".

Natürlich ist die Archivseite www.mysite.com/focus. Dies verursacht ein Problem, da ich eine bestimmte Seite als Archivseite benötige. Meta-Boxen werden zum Erstellen und Hinzufügen von Einstellungen zu Seiten verwendet. Ich kann nicht einfach eine Seite mit dem Namen "Focus" erstellen, da diese vom Post-Typ reserviert ist.

Meine Idee ist es, eine Seite mit dem Namen "Unser Fokus" zu erstellen, die eine URL mit dem Namen www.mysite.com/our-focus ergibt.

Ich möchte einfach das "our-" aus dieser URL entfernen, um den Eindruck zu erwecken, dass das Archiv verwendet wird.

Ich habe versucht, "has_archive" auf "false" zu setzen, aber dadurch wird wieder die Seite "archive.php" verwendet.

2
dcp3450

Sie können Ihrer .htaccess-Datei zwischen den <IfModule mod_rewrite.c>-Tags Folgendes hinzufügen:

RewriteCond %{HTTP_Host}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]

Ihr .htaccess sollte wie folgt aussehen:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rewrite
RewriteCond %{HTTP_Host}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]
</IfModule>
# END WordPress

Infolgedessen wird Folgendes ausgeführt:

http://example.com/our-focus/test

Weiterleitungen zu:

http://example.com/focus/test

Wenn ich recht verstehe, haben Sie einen Beitragstyp, der den/focus-Slug verwendet, aber Sie möchten, dass stattdessen eine normale Seite namens Our Focus diesen Slug verwendet. Sie müssen den Slug für den benutzerdefinierten Beitragstyp neu schreiben, um diese Seite zu verwenden, unabhängig davon, ob Archive aktiviert sind.

Wenn Sie den benutzerdefinierten Post-Typ in der Datei functions.php Ihres Themas festgelegt haben, können Sie mit dem Parameter 'rewrite' einen weiteren Slug festlegen. Zum Beispiel:

add_action('init', 'register_cpt');
function register_cpt() {
register_post_type('focus', array(
'label' => 'Focus',
'rewrite' => array('slug' => 'REWRITE-SLUG', 'with_front' => true),
)
) ); }

Ersetzen Sie 'REWRITE-SLUG' durch die Schnecke Ihrer Wahl.

Siehe diese Codex-Seite für weitere Informationen.

Die Verwendung eines .htaccess-Rewrites an sich funktioniert nicht, da dieser Slug weiterhin mit dem Slug des benutzerdefinierten Post-Typs in Konflikt steht. Sie müssen den Slug für den benutzerdefinierten Beitragstyp neu schreiben und dann einfach den Permalink im Bearbeitungsbildschirm der Seite auf/focus ändern. Die .htaccess-Datei muss nicht bearbeitet werden.

0
Tim McClure