diff --git src/wp-includes/post.php src/wp-includes/post.php
index 3d1227f..496c6bb 100644
--- src/wp-includes/post.php
+++ src/wp-includes/post.php
@@ -3685,6 +3685,38 @@ function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_p
 
 	$original_slug = $slug;
 
+	/**
+	 * Filter whether the post slug can be numeric.
+	 *
+	 * @since 4.2.0
+	 *
+	 * @param bool   $numeric_slugs Whether numeric slugs are allowed.
+	 * @param string $slug          The post slug.
+	 * @param string $post_type     Post type.
+	 */
+	if ( is_numeric( $slug ) && apply_filters( 'wp_unique_post_slug_numeric_slugs', false, $slug, $post_type ) !== true ) {
+		/**
+		 * Filter the prefix for numeric slugs.
+		 *
+		 * Prefixes numeric slugs so they do not collide with dates in some permalink structures.
+		 * The default prefix is the value of `$post_type` with a hyphen attached to the end. 
+		 * For example, if the current post type is 'post', the default value will be 'post-'. 
+		 *
+		 * @since 4.2.0
+		 *
+		 * @param string $slug_prefix   The numeric slug prefix.
+		 * @param string $slug          The post slug.
+		 * @param int    $post_ID       Post ID.
+		 * @param string $post_status   The post status.
+		 * @param string $post_type     Post type.
+		 * @param int    $post_parent   Post parent ID
+		 * @param string $original_slug The original post slug.
+		 */
+		$slug_prefix = apply_filters( 'wp_unique_post_slug_numeric_slug_prefix', $post_type . '-', $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug );
+
+		$slug = $slug_prefix . $slug;
+	}
+
 	$feeds = $wp_rewrite->feeds;
 	if ( ! is_array( $feeds ) )
 		$feeds = array();
