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?
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.