diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index 5e182b59d..da03f26de 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -909,6 +909,8 @@ function get_sample_permalink($id, $title=null, $name = null) { $post->post_name = sanitize_title($name? $name : $title, $post->ID); } + $post->filter = 'sample'; + $permalink = get_permalink($post, true); // Handle page hierarchy @@ -926,6 +928,8 @@ function get_sample_permalink($id, $title=null, $name = null) { $post->post_status = $original_status; $post->post_date = $original_date; $post->post_name = $original_name; + unset($post->filter); + return $permalink; } diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php index 5f1acb861..dcd1cad2c 100644 --- a/wp-includes/link-template.php +++ b/wp-includes/link-template.php @@ -92,7 +92,10 @@ function get_permalink($id = 0, $leavename = false) { $leavename? '' : '%pagename%', ); - $post = &get_post($id); + if ( is_object($id) && isset($id->filter) && 'sample' == $id->filter ) + $post = $id; + else + $post = &get_post($id); if ( empty($post->ID) ) return false; diff --git a/wp-includes/post.php b/wp-includes/post.php index 190690a12..d39bf855c 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -215,11 +215,13 @@ function &get_post(&$post, $output = OBJECT, $filter = 'raw') { $_post = & $GLOBALS['post']; else return $null; - } elseif ( is_object($post) ) { + } elseif ( is_object($post) && empty($post->filter) ) { _get_post_ancestors($post); wp_cache_add($post->ID, $post, 'posts'); $_post = &$post; } else { + if ( is_object($post) ) + $post = $post->ID; $post = (int) $post; if ( ! $_post = wp_cache_get($post, 'posts') ) { $_post = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post)); @@ -792,12 +794,15 @@ function sanitize_post($post, $context = 'display') { $post->ID = 0; foreach ( array_keys(get_object_vars($post)) as $field ) $post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context); + $post->filter = $context; } else { if ( !isset($post['ID']) ) $post['ID'] = 0; foreach ( array_keys($post) as $field ) $post[$field] = sanitize_post_field($field, $post[$field], $post['ID'], $context); + $post['filter'] = $context; } + return $post; }