2017-10-21 32 views
0

Je suis d'ajouter des règles de réécriture sur notre site Wordpress, via un plug-in qui utilise $target = 'index.php?' . $this->post_type . '=' . $title; $mapping = $title . '/?$'; add_rewrite_rule ($mapping, $target, 'top'); Cela fonctionne très bien, je peux voir les règles de réécriture dans wordpress. Cependant, lorsque je vais à l'URL, par exemple www.foo.com/my-new-page, je reçois une redirection 301 vers www.foo.com/. Je cherche à savoir où ce 301 est déclenché. J'ai rincé les règles après avoir ajouté mes pages, le type de poste personnalisé est enregistré, mais quelque chose n'est pas heureux. Les bonnes nouvelles sont que je ne reçois pas 404. Si je par exemple aller à my-new-page2 qui n'existe pas, je suis immédiatement servi avec un 404.résultats add_rewriter_rule Wordpress dans 301 redirigent

J'utilise un thème basé Jupiter, mais j'ai essayé aussi avec le thème Wordpress 2017 standard. Toujours le même problème. Il n'y a pas non plus de plugins actifs en relation avec ça (je pense).

Est-ce que quelqu'un a une suggestion sur où chercher?

+0

_ « Les bonnes nouvelles sont que je ne suis pas 404 » _ - qui pourrait ne signifie pas que la partie de la cartographie fonctionne, mais pas la cible si. Êtes-vous sûr de passer le type de poste comme _parameter name_ est le bon moyen de passer cela à l'index.php? Selon https://codex.wordpress.org/WordPress_Query_Vars, je suppose que vous devez passer _two_ paramètres, le type de poste en tant que 'post_type' et le titre de poste en tant que' name' – CBroe

+0

Bonne question. J'ai utilisé cette méthode avant où j'ai enregistré un post_type appelé 'apptizer' et puis j'ai enregistré des règles comme' ([^ \ /] +)? \ /? Auth -> \t index.php? Apptizer = auth'. Cela me permettrait d'aller à '/ auth' et il chargerait un template spécifique pour l'utilisateur post_type qui amènerait une application d'une seule page pour la connexion. Cela fonctionne comme un charme. Donc, je faisais la même chose maintenant, en enregistrant 'post-type 'et en inscrivant job_urls comme' account-manager /? $ -> index.php? Prospa_job = account-manager'. Je vais regarder ce qui se passe si j'ajoute post_type dans l'URL. – Mattijs

+0

J'ai juste essayé 'index.php? Post_type = prospa_job & name = account-manager' et il déclenche toujours un 301. Je vois aussi des règles de réécriture d'URL comme' employees_category/([^ /] +)/feed/(feed | rdf | rss | rss2 | atom) /? $ \t index.php? employees_category = $ correspond [1] & feed = $ correspond à [2] 'alors ce que je faisais au départ, c'est travailler. Il suffit de trouver la raison pour le 301. – Mattijs

Répondre

0

okay, j'ai compris quel était le problème. J'ai enregistré le type custom_post dans mon appel de constructeur, qui était au début.

En ajoutant un hook wp_loaded dans le constructeur, il est exécuté au bon moment, sans provoquer de redirection 301.

add_action('wp_loaded', function() { 
    $this->register_post_types($this->post_type, true, $this->post_label); 

}); 

Donc, juste pour confirmer, il est bien d'enregistrer la règle de réécriture comme

$target = 'index.php?' . $this->post_type . '=' . $title; 
$mapping = '^' . $title . '/?$'; 
add_rewrite_rule ($mapping, $target, 'top');