web-dev-qa-db-ja.com

ページは数字で始まり、WordPressは2を加えます

最初に、私は私がおかしくなっていると思った、そしてそれからさらなるトラブルシューティングの後に、それは私がそうではないことがわかった!

それで、私は2017と呼ばれるページを作成したいと思いました、しかし、私が数で始まるページを作成するたびに、WordPressは終わりに「-2」を追加します。

私はそれが私のテーマや私が持っていたいくつかの画像の中にすでに同名のものがあると思ったので、私は間違いなく他の場所を使用していないという奇妙な数字を試しました。

それで、私は考え出した、大丈夫、それで問題を切り分けるために私のテーマ(WordPressのデフォルトを有効にした)とプラグインを無効にしましょう…問題は持続しました。

ゴミ箱には何もなく、一致する投稿名やページ名はありません(画像でもない)

最後に、私は好きだった、私は別のサイトでこれを試してみましょう - さまざまな画像、さまざまなテーマ、さまざまなプラグイン、さまざまなもの...問題は解決しませんでした。

だから、今私はこれがWordPressの事だと思います。これを修正する方法はありますか?

基本的に、再現するには、数字で始まるページを作成します - 2005年、1999年、または2017年です - 私が気づいたのは、数字で始める必要があるということだけです。

私は何かが足りないのですか?

5
Josh Rodgers

wp_unique_post_slug 関数内で、「日付アーカイブと競合するURLになる可能性のある新しい投稿スラッグを防ぐ」ためのチェックが行われます。これはwp-includes/post.phpの3812行目の関連コードです。

    // 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