首先,我以为我疯了,然后经过额外的故障排除,结果证明我不是!
所以,我想创建一个名为2017的页面,但每次我创建一个以数字开头的页面,WordPress都会在末尾附加“-2”。
我认为这是我的主题或一些图片中已经有了相同名称的东西,所以我尝试了各种奇怪的数字,我肯定没有使用其他地方,WordPress仍然在末尾附加“-2”。
然后我想,好吧,让我们禁用我的主题(启用WordPress默认设置)和插件来隔离问题。。。问题依然存在。
垃圾箱中没有任何内容,没有匹配的帖子或页面名称(甚至连图片都没有)
最后,我想,让我在另一个网站上试试这个-不同的图片,不同的主题,不同的插件,不同的一切。。。问题依然存在。
所以,现在我认为这是一个WordPress的事情。有没有办法解决这个问题?
基本上,要复制并创建一个以数字开头的页面,可以是2005年、1999年或2017年,我唯一注意到的是它必须以数字开头。
我错过什么了吗?
最合适的回答,由SO网友:Andrew 整理而成
在wp_unique_post_slug
功能,进行检查以“防止新的post段塞,这可能导致URL与日期存档冲突。”这是第3812行的相关代码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;
}
}