diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php
index e656dd5d60..4fef80f0eb 100644
--- a/wp-admin/edit-form-advanced.php
+++ b/wp-admin/edit-form-advanced.php
@@ -368,7 +368,7 @@ wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
public ? get_sample_permalink_html($post->ID) : '';
$shortlink = wp_get_shortlink($post->ID, 'post');
-if ( !empty($shortlink) )
+if ( !empty( $shortlink ) && $shortlink !== get_permalink( $post->ID ) )
$sample_permalink_html .= '' . __('Get Shortlink') . '';
if ( $post_type_object->public && ! ( 'pending' == get_post_status( $post ) && !current_user_can( $post_type_object->cap->publish_posts ) ) ) {
diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php
index 5fb61726fb..91c375d628 100644
--- a/wp-includes/link-template.php
+++ b/wp-includes/link-template.php
@@ -2351,20 +2351,21 @@ function wp_get_shortlink($id = 0, $context = 'post', $allow_slugs = true) {
global $wp_query;
$post_id = 0;
- if ( 'query' == $context && is_single() ) {
+ if ( 'query' == $context && is_singular() ) {
$post_id = $wp_query->get_queried_object_id();
+ $post = get_post( $post_id );
} elseif ( 'post' == $context ) {
- $post = get_post($id);
+ $post = get_post( $id );
$post_id = $post->ID;
}
$shortlink = '';
- // Return p= link for posts.
- if ( !empty($post_id) && '' != get_option('permalink_structure') ) {
- $post = get_post($post_id);
- if ( isset($post->post_type) && 'post' == $post->post_type )
- $shortlink = home_url('?p=' . $post->ID);
+ // Return p= link for all public post types.
+ if ( ! empty( $post_id ) ) {
+ $post_type = get_post_type_object( $post->post_type );
+ if ( $post_type->public )
+ $shortlink = home_url('?p=' . $post_id);
}
return apply_filters('get_shortlink', $shortlink, $id, $context, $allow_slugs);