web-dev-qa-db-fra.com

La page commence par le numéro, WordPress ajoute 2

D'abord, je pensais que j'étais en train de devenir fou, puis après un dépannage supplémentaire, il s'avère que je ne le suis pas!

Je voulais donc créer une page appelée 2017, mais chaque fois que je crée une page qui commence par un numéro, WordPress ajoute un "-2" à la fin.

Je pensais que c'était quelque chose dans mon thème ou des images que j'avais déjà et qui portaient le même nom. J'ai donc essayé toutes sortes de nombres étranges que je n'utilisais certainement pas à d'autres endroits et WordPress ajoute toujours un "-2" à la fin.

Ensuite, je me suis dit, ok, alors désactivons mon thème (activé par défaut pour WordPress) et les plugins pour isoler le problème ... le problème persiste.

Rien n'est dans la corbeille, il n'y a pas de post correspondant ou de noms de page (pas même les images)

Enfin, je me suis dit, laissez-moi essayer ceci sur un autre site - différentes images, différents thèmes, différents plugins, tout différent ... le problème persiste.

Donc, maintenant je pense que c'est une chose WordPress. Y'a t'il un moyen d'arranger cela?

Fondamentalement, pour reproduire, essayez de créer une page qui commence par un numéro - par exemple 2005, 1999 ou 2017 - la seule chose que j'ai remarquée, c'est qu'elle doit commencer par un numéro.

Est-ce que je manque quelque chose?

5
Josh Rodgers

Dans la fonction wp_unique_post_slug , des vérifications sont effectuées pour "Empêcher les nouvelles erreurs de publication pouvant entraîner des URL en conflit avec les archives de date". Voici le code correspondant à la ligne 3812 de wp-includes/post.php

    // Prevent new post slugs that could result in URLs that conflict with date archives.
    $post = get_post( $post_ID );
    $conflicts_with_date_archive = false;
    if ( 'post' === $post_type && ( ! $post || $post->post_name !== $slug ) && preg_match( '/^[0-9]+$/', $slug ) && $slug_num = intval( $slug ) ) {
        $permastructs   = array_values( array_filter( explode( '/', get_option( 'permalink_structure' ) ) ) );
        $postname_index = array_search( '%postname%', $permastructs );

        /*
         * Potential date clashes are as follows:
         *
         * - Any integer in the first permastruct position could be a year.
         * - An integer between 1 and 12 that follows 'year' conflicts with 'monthnum'.
         * - An integer between 1 and 31 that follows 'monthnum' conflicts with 'day'.
         */
        if ( 0 === $postname_index ||
            ( $postname_index && '%year%' === $permastructs[ $postname_index - 1 ] && 13 > $slug_num ) ||
            ( $postname_index && '%monthnum%' === $permastructs[ $postname_index - 1 ] && 32 > $slug_num )
        ) {
            $conflicts_with_date_archive = true;
        }
    }
11
Andrew