Opened 13 years ago
Closed 12 years ago
#24457 closed defect (bug) (worksforme)
add_filter('gettext' ignores get_post_type after deleting a featured image
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | |
| Component: | General | Keywords: | |
| Focuses: | Cc: |
Description
Steps to reproduce:
- register a custom post type using 'register_post_type', in the example my post type is 'gorilla_residents'.
- use the following code to filter the 'Set featured image' text for a specific post_type:
function change_featuredimage_txt($translated) {
global $post;
if (get_post_type($post) == 'gorilla_residents') {
$translated = str_ireplace('Set featured image', 'Set Gorilla Avatar', $translated);
$translated = str_ireplace('Featured Image', 'Gorilla Avatar', $translated);
$translated = str_ireplace('Remove featured image', 'Remove Gorilla Avatar', $translated);
}
return $translated;
}
add_filter('gettext', 'change_featuredimage_txt');
- In the admin, create a new instance of the post type, e.g. a Resident.
- Asign a featured image. NOTE: the correct filtered text is displayed.
- Remove/Delete the featured image.
NOTE: the incorrect featured image text is displayed.
It looks as though the add_filter('gettext' ... function in my functions.php is being ignored after the ajax delete featured image function is called.
Change History (4)
#2
@
13 years ago
Thanks Johnbillion, your method resolves the issue. However I do still believe this is a bug as the functionality behaves differently when loaded via ajax, it should always resolve the same.
#3
@
13 years ago
In this instance, it would be better and more appropriate to use the admin_post_thumbnail_html filter, which receives the $post_id for context, and to remove the metabox and re-add it with the title you want. Translation filters are a little bit hacky for this purpose.
function myprefix_add_meta_boxes() {
// Relabel featured image meta box
remove_meta_box( 'postimagediv', 'gorilla_residents', 'side' );
add_meta_box( 'postimagediv', 'Gorilla Avatar', 'post_thumbnail_meta_box', 'gorilla_residents', 'side', 'default' );
}
add_action( 'add_meta_boxes', 'myprefix_add_meta_boxes' );
function myprefix_admin_post_thumbnail_html( $output, $post_id ) {
if ( 'gorilla_residents' === get_post_type( $post_id ) ) {
$output = str_replace( 'Set featured image', 'Set Gorilla Avatar', $output );
$output = str_replace( 'Remove featured image', 'Remove Gorilla Avatar', $output );
}
return $output;
}
add_filter( 'admin_post_thumbnail_html', 'myprefix_admin_post_thumbnail_html', 10, 2 );
Note: See
TracTickets for help on using
tickets.
I've rolled my own function for determining the current post type when filtering this text. See here.
I'm not sure if this is a bug on its own. The global
$postobject isn't always populated (which is why your code doesn't always work) but it doesn't need to be.Related: #19257