web-dev-qa-db-fra.com

Pourquoi ne pas enregistrer le permalien "360" pour une page?

J'essaie de sauvegarder ma page avec le lien permanent "360", mais pour une raison quelconque, WP continue de mettre à jour le lien permanent vers "360-2". J'ai vérifié partout dans mon WP et il n'y a pas de page ou post qui utilise permalink "360". 360 est-il un lien permanent pour quelque chose d’interne? Si non, quel est le problème?

4
Gasim

Le problème vient de l’utilisation de chiffres uniquement en tant qu’URL. Voici un fil de discussion dans WP qui aborde ce problème. Je vais citer Otto:

WordPress 2.3 et supérieur ne permet pas aux slug de publication ou de page d'être entièrement numériques. En effet, ce schéma d'URL entrera en conflit avec les publications de plusieurs pages.

Il n'y a pas de solution. Changez-les en quelque chose d'autre.

Autrement, un plugin existe pour permettre cela, si vous abandonnez la publication de plusieurs pages: http://wordpress.org/extend/plugins/allow-numeric-stubs/

Plus d'infos ici: http://trac.wordpress.org/ticket/5305

4
denis.stoyanov

Si nous vérifions la source de la fonction wp_unique_post_slug(), nous voyons qu'elle est attendue pour hiérarchique types de publication autres que nav_menu_item.

Si nous essayons par exemple les slugs 360 ou page360, le suffixe -n slug apparaîtra.

Nous pouvons jouer avec par exemple:

echo wp_unique_post_slug( 
    $slug        = '360', 
    $post_id     = '', 
    $post_status = '', 
    $post_type   = 'page' 
);

ou

echo wp_unique_post_slug( 
    $slug        = 'page360', 
    $post_id     = '', 
    $post_status = '', 
    $post_type   = 'page' 
);

pour voir ça.

L'un des contrôles de "mauvaise qualité", dans wp_unique_post_slug(), est le suivant:

preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) 

Il correspond dans votre cas:

preg_match( "@^(page)?\d+$@", '360' ) 

d'où le suffixe slug résultant.

Vous pouvez aussi jouer avec ça ici:

https://regex101.com/r/jF3kC6/1

Notez qu'il est possible de modifier le slug via le filtre wp_unique_post_slug, mais il faut faire très attention en le faisant.

3
birgire