web-dev-qa-db-fra.com

Changer le permalien pour une entrée unique

J'ai défini un type de publication personnalisé, projects, et j'ai défini le lien permanent pour ces types de publication sur /projects/my-project/. Cependant, pour l'un des projets, je dois lui attribuer une URL spéciale. Ainsi, au lieu de /projects/special-project/, il apparaît sur /special-project/.

Est-ce possible?

2
Xavi Ivars

Essayez d’ajouter ce qui suit à votre functions.php:

function wpse221475_custom_rewrite_rules() {

  add_rewrite_rule(
    '^(special-project)?', 
    'index.php?post_type=projects&name=$matches[1]', 
    'top'
  );

}

add_action('init', 'wpse221475_custom_rewrite_rules');

Assurez-vous de vider vos règles de réécriture après avoir ajouté cette règle.

Visite:

Dashboard -> Settings -> Permalinks

Ou, si vous le souhaitez, vous pouvez utiliser flush_rewrite_rules() par programmation.

Pour rediriger les demandes de http://example.com/projects/special-project vers http://example.com/special-project, vous pouvez analyser la demande à l'aide du hook wp.

function wpse221475_redirect_request($wp) {

    if ( ! empty($wp->request) && $wp->request === 'projects/special-project' ) {

        wp_redirect(home_url('special-project'), 301);
        exit;

    }

}

add_action('wp', 'wpse221475_redirect_request');

Bien sûr, il existe d'autres moyens/méthodologies que vous pourriez utiliser pour obtenir le même effet, mais ce qui précède suffira.

3
userabuser