web-dev-qa-db-fra.com

Rediriger une page en fonction du dernier mot dans le slug

J'ai quelques types de messages personnalisés enregistrés = Personnel, Propriétés

Si j'ai une page avec le slug archive-staff, comment puis-je rediriger automatiquement cette page vers la page d'archive Staff CPT avec une fonction php?

Cela devrait également fonctionner pour toute page commençant par "archive-", redirigeant automatiquement vers l'archive de tout type de message personnalisé enregistré correspondant au 2e mot du slug.

Ainsi, la page personnalisée du personnel d'archivage serait redirigée vers la page d'archive Personnel CPT.

La page de propriétés d'archivage personnalisées serait redirigée vers la page d'archive Properties CPT.

... et ainsi de suite pour tous les types de publication personnalisés uniquement si leur page personnalisée correspondante existe.

1
Charlie Wedel

Il y a beaucoup de solutions pour ça ..

1. Règles de .htaccess

Vous pouvez mettre quelques règles de redirection dans votre fichier .htaccess:

RewriteRule ^(.*)\-staff/$ /staff/? [L,R=301]
// some other rules

2. Utilisation de hooks WordPress

function my_redirect_function() {
    global $wp;

    if ( preg_match( '@staff/?$@', $wp->request ) ) {
        wp_redirect( get_post_type_archive_link( 'staff' ) );
        die;
    }

    // ... put other rules in here
}
add_action( 'template_redirect', 'my_redirect_function' );

3. Utilisation du plugin Redirection

Vous pouvez utiliser ce plugin et définir des redirections personnalisées basées sur des expressions régulières.

2