WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have created a custom post type, but it just to list some data on a page and it doesn't have any single.php.

How do i disable so on the post page when i click publish it doesn't show the "View Page" link and also how do i disable the "View" link in the columns for that post type.


share|improve this question

Changing the public argument of register_post_type() will remove the link to view your custom post type publicly.

'public' => false, 

See: WordPress Codex

Note that this will also hide your custom post type from the admin navigation menus, which you might not want. To hide the 'View Post' link but keep your post type in the admin menus use show_ui as well like so:

'public'  => false,
'show_ui' => true,
share|improve this answer
"This answer was flagged as low-quality because of its length and content", which I am sure you don't want. Please add some explanation to your answer and links to relevant sources, such as the Codex. – s_ha_dum Oct 16 '13 at 23:13
I test this on my site before posting answer here. – pendjer Oct 17 '13 at 8:36
Aki check this. wordpress.stackexchange.com/questions/15321/… I notice that this is the similar question (solved). – pendjer Oct 17 '13 at 8:40
If you are response about testing the answer is directed at me, I said nothing about whether the answer is correct or not, just that you need to add some explanation to it. – s_ha_dum Oct 17 '13 at 13:29

The previous answer is incorrect. The message at the top of a post edit page cannot be modified using labels. You need to use the post_updated_messages filter.

The following function will customize the messages using the name of the post type - handy if you're using custom post types. It's a modified version of the example on the Wordpress Codex.

Notice that the View and Preview links are controlled with the $viewLink, $previewLink, and $schedPreviewLink variables, which will only appear if the visibility of the current post's post type is set to public.

function custom_post_type_messages($messages) {
  global $post, $post_ID;

  $post_type = get_post_type( $post_ID );
  $obj = get_post_type_object($post_type);

  $singular = $obj->labels->singular_name;

  $viewLink = ($obj->public) ?  ' <a href="%s">View '.strtolower($singular).'</a>' : "";
  $previewLink = ($obj->public) ? ' <a target="_blank" href="%s">Preview '.strtolower($singular).'</a>': "";
  $schedPreviewLink = ($obj->public) ? ' <a target="_blank" href="%2$s">Preview '.strtolower($singular).'</a>': "";

  $messages[$post_type] = array(
    0 => '', // Unused. Messages start at index 1.
    1 => sprintf( __($singular.' updated.'.$viewLink), esc_url( get_permalink($post_ID) ) ),
    2 => __('Custom field updated.'),
    3 => __('Custom field deleted.'),
    4 => __($singular.' updated.'),
    5 => isset($_GET['revision']) ? sprintf( __($singular.' restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __($singular.' published.'.$viewLink), esc_url( get_permalink($post_ID) ) ),
    7 => __('Page saved.'),
    8 => sprintf( __($singular.' submitted.'.$previewLink), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __($singular.' scheduled for: <strong>%1$s</strong>.'.$schedPreviewLink), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __($singular.' draft updated.'.$previewLink), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  return $messages;

add_filter('post_updated_messages', 'custom_post_type_messages' );
share|improve this answer
While woefully lacking in detail, the previous answer by @pendjer is not wrong. Setting the public argument to false does remove the "View" links on both the edit "index" table and the main edit screen. And that seems to be what the OP wants. – s_ha_dum Oct 17 '13 at 13:35
@s_ha_dum 'when i click publish it doesn't show the "View Page"' indicates to me the message that is displayed at the top of the page when a post is published or updated. Simply changing the public argument to false will not remove this message/link. It still appears, and the link will produce a 404 error. – Matt Nov 20 '13 at 19:56

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.