web-dev-qa-db-fra.com

404 redirection basée sur l'URL

J'ai un lien comme celui-ci:

https://www.example.com/bh-job/38/?title=digital-marketing-intelligence-expert

Lorsque je surfe sur la page, je suis redirigé vers la page 404 car cette page n’existe pas. La page n'existe pas mais j'aimerais rediriger vers https://www.example.com/jobs à la place.

J'ai aussi une autre page comme celle-ci:

https://www.example.com/bh-job/121/?title=sem-manager

Et ceci est une page réelle et peut être trouvé.

Donc, il me faudrait une vérification où je redirige de la page 404 vers la page /jobs LORSQUE le lien commence par https://www.example.com/bh-job/ et est introuvable. Comment pourrais-je faire ça?

1
nielsv

J'utiliserais le hook wp, qui se déclenche juste après l'analyse de la demande et l'interrogation suivante:

function wpse_199869_wp( $wp ) {
    if ( ! is_admin() && is_404() && preg_match( '/^bh-job/', $wp->request ) ) {
        wp_redirect( home_url( user_trailingslashit( 'jobs' ) ) );
        exit;
    }
}

add_action( 'wp', 'wpse_199869_wp' );

Nous nous assurons qu'il s'agit bien d'un 404 et vérifions si la requête (chemin d'URI) commence par bh-job - si c'est le cas, redirigez-le vers /jobs (la fonction user_trailingslashit ajoutera ou supprimera une barre oblique de fin correspondant à votre structure de lien permanent).

1
TheDeadMedic