7

I registered a custom post type name of Banks.

Could i change this post types post-thumbnails meta box title and text value ?

Is that possible ?

kuldip Makadiya
  • 706
  • 4
  • 23
Fatih Toprak
  • 1,097
  • 1
  • 19
  • 48
  • 1
    You shold mark the right answer as the right one (post type labels). because the other one are really wrong! – user315338 Feb 27 '20 at 14:34

4 Answers4

11

Ok! Old question with multiple answers of the same wrong approach using different hooks! In case anyone needs, I'm posting a better way of doing this, without using extra hooks or editing metaboxes.

When registering a new CPT using register_post_type function, we can (and should!) pass a labels array to it's arguments. Some of these labels are for CPT edit screen.

$labels = [
    'name'                  => __( 'Banks', 'textdomain' ),
    'singular_name'         => __( 'Bank', 'textdomain' ),
    'add_new'               => __( 'Add New', 'textdomain' ),
    'add_new_item'          => __( 'Add New Bank', 'textdomain' ),  //used in post-new.php?post_type=bank
    'edit_item'             => __( 'Edit Bank', 'textdomain' ), //used in post.php
    'new_item'              => __( 'New Bank', 'textdomain' ),
    'all_items'             => __( 'All Banks', 'textdomain' ),
    'view_item'             => __( 'Vew Bank', 'textdomain' ),
    'search_items'          => __( 'Search Banks', 'textdomain' ),
    'not_found'             => __( 'No banks found', 'textdomain' ),
    'not_found_in_trash'    => __( 'No banks found in trash', 'textdomain' ),
    'parent_item_colon'     => __( 'Parent bank', 'textdomain' ),
    'menu_name'             => __( 'Banks', 'textdomain' ),
    'featured_image'        => __( 'Bank image', 'textdomain' ),    //used in post.php
    'set_featured_image'    => __( 'Set bank image', 'textdomain' ),    //used in post.php
    'remove_featured_image' => __( 'Remove bank image', 'textdomain' ), //used in post.php
    'use_featured_image'    => __( 'Use as bank image', 'textdomain' ), //used in post.php
    'insert_into_item'      => __( 'Insert into bank', 'textdomain' ),  //used in post.php
    'uploaded_to_this_item' => __( 'Uploaded to this bank', 'textdomain' ), //used in post.php
    'filter_items_list'     => __( 'Filter banks', 'textdomain' ),
    'items_list_navigation' => __( 'Banks navigation', 'textdomain' ),
    'items_list'            => __( 'Banks list', 'textdomain' ),
];

$args = [
    'description'           =>  'Bank CPT',
    'public'                =>  false,
    'show_ui'               =>  true,
    'show_in_menu'          =>  true,
    'show_in_admin_bar'     =>  false,
    'has_archive'           =>  false,
    'labels'                =>  $labels,
    'supports'              =>  ['thumbnail'],
    'query_var'             =>  false,
    'can_export'            =>  true,
    'show_in_rest'          =>  false,
];

register_post_type('bank', $args);
Yashar
  • 621
  • 9
  • 18
6

Just making a little more easier to understand:

add_action( 'admin_head', 'replace_default_featured_image_meta_box', 100 );
function replace_default_featured_image_meta_box() {
    remove_meta_box( 'postimagediv', 'my-post-type-here', 'side' );
    add_meta_box('postimagediv', __('My Cover Image'), 'post_thumbnail_meta_box', 'my-post-type-here', 'side', 'high');
}

The main idea is: re-declaring the meta-box with the required title. Replace the post-type for which you want to edit the default "Featured Image" label.

Reza Mamun
  • 5,991
  • 1
  • 43
  • 42
5

I just found the sulotion.

Here is an example.

add_action( 'admin_head', 'remove_my_meta_boxen' );
function remove_my_meta_boxen() {
    remove_meta_box( 'postimagediv', 'banks', 'side' );
    add_meta_box('postimagediv', __('Add a bank image'), 'post_thumbnail_meta_box', 'banks', 'side', 'high');
}

Happy coding.

Fatih Toprak
  • 1,097
  • 1
  • 19
  • 48
1
<?php
/*
 * Change the featured image metabox title text
 */
function km_change_featured_image_metabox_title() {
    remove_meta_box( 'postimagediv', 'my_post_type_name', 'side' );
    add_meta_box( 'postimagediv', __( 'NEW TITLE TEXT', 'km' ), 'post_thumbnail_meta_box', 'my_post_type_name', 'side' );
}
add_action('do_meta_boxes', 'km_change_featured_image_metabox_title' );
/*
 * Change the featured image metabox link text
 *
 * @param  string $content Featured image link text
 * @return string $content Featured image link text, filtered
 */
function km_change_featured_image_text( $content ) {
    if ( 'my_post_type_name' === get_post_type() ) {
        $content = str_replace( 'Set featured image', __( 'NEW SET TEXT HERE', 'km' ), $content );
        $content = str_replace( 'Remove featured image', __( 'NEW REMOVE TEXT HERE', 'km' ), $content );
    }
    return $content;
}
add_filter( 'admin_post_thumbnail_html', 'km_change_featured_image_text' );
  • While this code snippet may solve the question, [including an explanation](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) really helps to improve the quality of your post. Remember that you are answering the question for readers in the future, and those people might not know the reasons for your code suggestion. – Athul Nath Mar 20 '18 at 10:29