web-dev-qa-db-fra.com

En utilisant WP Réécrire, mais juste pas "l'obtenir"

J'essaie d'utiliser WP Rewrite pour éviter de devoir entrer quoi que ce soit dans un fichier htaccess. Jusqu'à présent, celui-ci fonctionne parfaitement (il charge un message à partir d'un type de message personnalisé):

$leader_structure = 'performance/leaders/%leader%';
$wp_rewrite->add_rewrite_tag("%leader%", '([^/]+)', "leader=");
$wp_rewrite->add_permastruct('leader', $leader_structure, false);

Fondamentalement, si vous allez sur http://domain.com/performance/leaders/some-slug-here , le contenu de celui-ci sera correctement chargé. http://domain.com?leader=some-slug-here .

Cependant, lorsque je réessaie avec un type de message non personnalisé (tout simplement WP messages normal), je ne parviens pas à le faire fonctionner. Voici ce que je fais:

$scenarios_structure = 'our-thinking/scenarios/%post%';
$wp_rewrite->add_rewrite_tag("%post%", '([^/]+)', "name=");
$wp_rewrite->add_permastruct('scenarios', $scenarios_structure, false);

Donc ici, je le veux pour que http://domain.com/our-thinking/scenarios/some-post-slug charge le single WP post. Mais ce n'est pas le cas. Quand je vais à cette URL, il redirige vers http://domain.com/some-post-slug .

C'est probablement évident que je fais le mal à quelqu'un d'autre, mais je ne comprends tout simplement pas. Les paramètres de permalien de mon WordPress sont définis sur "Nom du message". Et mon fichier .htaccess est intact.

1
dallen

Votre paramètre de réécriture est correct, mais WordPress est redirigé vers l’url canonique de la publication. Ceci est fait par WodPress pour éviter une mauvaise indexation du contenu dupliqué (lorsqu'un contenu identique est accessible via 2 URL différentes).

Vous pouvez empêcher cela de supprimer le filtre de redirection canonique:

add_action('wp_loaded', function() {
  remove_filter('template_redirect', 'redirect_canonical');
});

Cependant, ce n'est pas une méthode recommandée. En fait, si vous le faites, votre message sera accessible à la fois via l'URL normale et la nouvelle URL créée.

Lorsque vous souhaitez modifier le post-permastruct par défaut, la méthode recommandée consiste à ajuster la structure de permalien dans les paramètres de permalien de WordPress. Ainsi, dans votre cas, la structure de permalien doit être

our-thinking/scenarios/%postname%

et pour éviter que cela n'affecte tout autre type de publication personnalisée ou taxonomie personnalisée, utilisez l'argument $rewrite avec la clé 'with_front' définie sur false, par exemple lorsque vous les enregistrez. :

...
'rewrite' => array( 'with_front' => false )
...
1
gmazzap