From 9f6f8fd12b54fbefe0c7f8b86c11fb1104293a01 Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Mon, 3 May 2010 00:37:11 +0000 Subject: [PATCH] Serve a canonical redirection for ?p=, ?page_id=, ?attachment_id= url's for incorrect post_types (ie. ?p= will redirect to that page url). Fixes #13125 git-svn-id: https://develop.svn.wordpress.org/trunk@14355 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/canonical.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/wp-includes/canonical.php b/wp-includes/canonical.php index 7d7da1bc82..e2551fb71e 100644 --- a/wp-includes/canonical.php +++ b/wp-includes/canonical.php @@ -81,7 +81,15 @@ function redirect_canonical($requested_url=null, $do_redirect=true) { // These tests give us a WP-generated permalink if ( is_404() ) { - $redirect_url = redirect_guess_404_permalink(); + + // Redirect ?page_id, ?p=, ?attachment_id= to their respective url's + $id = max( get_query_var('p'), get_query_var('page_id'), get_query_var('attachment_id')); + if ( $id && $redirect_url = get_permalink($id) ) + $redirect['query'] = remove_query_arg(array('p', 'page_id', 'attachment_id'), $redirect['query']); + + if ( ! $redirect_url ) + $redirect_url = redirect_guess_404_permalink(); + } elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) { // rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101 if ( is_attachment() && !empty($_GET['attachment_id']) && ! $redirect_url ) {