Hide permalink and preview button and link on custom post

anyone know how to custom box that contain “Publish,save draft,and preview button” ?
i’ll hide all button except Publish button.
and same as “change permalink” also “view,delete,edit” link inside post how to hide the permalink and view link ?

here the illustration what i talking about.

Read More

Customizing Publish Button From Original WordPress

enter image description here
enter image description here

Customizing post link from original wordpress

enter image description here
enter image description here

delete permalink under wordpress post title

enter image description here

Related posts

3 comments

  1. You can accomplish the above using hooks. Use the code below in your active theme’s functions.php file to get this work

    delete permalink under wordpress post title

    add_filter( 'get_sample_permalink_html', 'wpse_125800_sample_permalink' );
    function wpse_125800_sample_permalink( $return ) {
        $return = '';
    
        return $return;
    }
    

    Customizing post link from original wordpress

    add_filter( 'page_row_actions', 'wpse_125800_row_actions', 10, 2 );
    add_filter( 'post_row_actions', 'wpse_125800_row_actions', 10, 2 );
    function wpse_125800_row_actions( $actions, $post ) {
        unset( $actions['inline hide-if-no-js'] );
        unset( $actions['view'] );
    
        return $actions;
    }
    

    Customizing Publish Button From Original WordPress

    Below has room for improvement, I couldn’t get the hooks to do the following, so used css way to hide it.

    global $pagenow;
    if ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) {
        add_action( 'admin_head', 'wpse_125800_custom_publish_box' );
        function wpse_125800_custom_publish_box() {
            if( !is_admin() )
                return;
    
            $style = '';
            $style .= '<style type="text/css">';
            $style .= '#edit-slug-box, #minor-publishing-actions, #visibility, .num-revisions, .curtime';
            $style .= '{display: none; }';
            $style .= '</style>';
    
            echo $style;
        }
    }
    

    NOTES

    Additional conditional statement in my case,
    here i’ve already solved for the conditional statement

    global $pagenow;
    if( 'edit.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
         // here i use delete post row function that explained by Maruti Mohanty on my custom post 
    }
    

    also conditional statement for add new post and custom publish metabox settings

    global $pagenow;
        if( 'page-new.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
             // here i use add new post and custom publish metabox function
        }
    

    let me know if there have another explanation.

    thanks!

  2. I just stumbled across this question and thought I’d share my most common solution which may not work for everyone in all scenarios but I believe this is the most efficient way to achieve the desired results.

    When you register a CPT that does not require a single-view output in your theme or plugin, simply define the property 'public' => false,

    For example a typical CPT registration might look something like this:

    <?php 
    
    /**
     * Custom Post Type: cw-programs (programs)
     * Theme: Your Custom Theme
     * Desc: A custom WP theme
     *
     * @package custom-wp-theme
     * @since   1.0.0
     * @version 1.0.0
     */
    function mycpt_content_type_name() {
      $labels = array(
        'name' => __( 'My CPT'),
        'singular_name' => __( 'My CPT' ),
        'add_new' => _x('Add New', 'My CPT'),
        'add_new_item' => __('Add New My CPT'),
        'edit_item' => __('Edit My CPT'),
        'new_item' => __('New My CPT'),
        'view_item' => __('View My CPT'),
        'search_items' => __('Search My CPT'),
        'not_found' =>  __('No My CPT found'),
        'not_found_in_trash' => __('No My CPT found in Trash'), 
        );
        $args = array(
        'labels' => $labels,
        'menu_icon' => 'dashicons-clipboard',
        'public' => false,
        'publicly_queryable' => false,
        'show_ui' => true, 
        'query_var' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'rewrite' => array('slug' => __( 'mycpt' )),
        'supports' => array('title', 'editor'),
        'show_in_menu' => false
        ); 
    
        register_post_type(__( 'cw-program' ),$args);
    }
    
    add_action( 'init', 'mycpt_content_type_name' );
    

    In one-fell-swoop, this should remove the view, slug and preview changes links from all associated admin screens. I like This solution, because it does not require any additional functions and the logic is defined in the same place as your cpt (obviously). Hope that this helps others out there, looking for a similar solution.

  3. We can remove the Post preview, view and permalinks field by setting publicly_queryable argument to false.

    setting **publicly_queryable** argument to false

Comments are closed.