web-dev-qa-db-fra.com

Comment puis-je supprimer un mot d'une url dans WordPress à l'aide de .htaccess?

Sur le site que je suis en train de construire, il y a un type de post appelé "Focus". Puisqu'ils ont besoin d'url pour ressembler à www.mysite.com/focus/page-post-name, j'ai le type de message slug comme "focus".

Bien sûr, la page d'archive est www.mysite.com/focus, ce qui pose un problème, car j'ai besoin qu'une page spécifique soit une page d'archive. Les méta-boîtes sont utilisées pour créer et ajouter des paramètres aux pages. Je ne peux pas simplement créer une page appelée "Focus" car celle-ci est réservée par le type de publication.

Mon idée est de créer une page appelée "Notre objectif", dont le résultat est une URL de www.mysite.com/our-focus.

Je voudrais juste supprimer le "notre-" de cette URL pour faire apparaître que l'archive est utilisée.

J'ai essayé de définir has_archive sur false, mais cela revient simplement à utiliser la page archive.php.

2
dcp3450

Vous pouvez ajouter les éléments suivants à votre fichier .htaccess entre les balises <IfModule mod_rewrite.c>:

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

Votre .htaccess devrait ressembler à ceci:

# 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

En conséquence, il procédera comme suit:

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

Redirige vers:

http://example.com/focus/test
1

Si j'ai bien compris, vous avez un type de message qui utilise le slug/focus, mais vous souhaitez qu'une page normale appelée Our Focus utilise ce slug à la place. Vous devrez réécrire le slug pour le type de publication personnalisé pour pouvoir utiliser cette page, que les archives soient activées ou non.

Si vous avez créé le type de message personnalisé dans le fichier functions.php de votre thème, vous pouvez utiliser le paramètre 'rewrite' pour définir un autre slug. Par exemple:

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

Remplacer 'REWRITE-SLUG' par le slug de votre choix.

Voir cette page du Codex pour plus d'informations.

L'utilisation d'une réécriture .htaccess par elle-même ne fonctionnera pas, car ce slug sera toujours en conflit avec le slug du type de message personnalisé. Vous devrez réécrire le slug pour le type d'article personnalisé, puis vous pourrez simplement changer le permalien dans l'écran d'édition de la page en/focus. Pas besoin de modifier le fichier .htaccess.

0
Tim McClure