I'm trying to edit the error message that appears when you hit Add comment button (from Admin panel) without typing a comment.

Here's wp_ajax_replyto_comment function (from wp-admin/includes/ajax-actions.php) that handles this error message.
function wp_ajax_replyto_comment( $action ) {
global $wp_list_table, $wpdb;
if ( empty( $action ) )
$action = 'replyto-comment';
check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
set_current_screen( 'edit-comments' );
$comment_post_ID = (int) $_POST['comment_post_ID'];
if ( !current_user_can( 'edit_post', $comment_post_ID ) )
wp_die( -1 );
$status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
if ( empty($status) )
wp_die( 1 );
elseif ( in_array($status, array('draft', 'pending', 'trash') ) )
wp_die( __('ERROR: you are replying to a comment on a draft post.') );
$user = wp_get_current_user();
if ( $user->exists() ) {
$user_ID = $user->ID;
$comment_author = $wpdb->escape($user->display_name);
$comment_author_email = $wpdb->escape($user->user_email);
$comment_author_url = $wpdb->escape($user->user_url);
$comment_content = trim($_POST['content']);
if ( current_user_can( 'unfiltered_html' ) ) {
if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
kses_remove_filters(); // start with a clean slate
kses_init_filters(); // set up the filters
}
}
} else {
wp_die( __( 'Sorry, you must be logged in to reply to a comment.' ) );
}
if ( '' == $comment_content )
wp_die( __( 'ERROR: please type a comment.' ) );
$comment_parent = absint($_POST['comment_ID']);
$comment_auto_approved = false;
$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
$comment_id = wp_new_comment( $commentdata );
$comment = get_comment($comment_id);
if ( ! $comment ) wp_die( 1 );
$position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
// automatically approve parent comment
if ( !empty($_POST['approve_parent']) ) {
$parent = get_comment( $comment_parent );
if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) {
if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) )
$comment_auto_approved = true;
}
}
ob_start();
if ( 'dashboard' == $_REQUEST['mode'] ) {
require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
_wp_dashboard_recent_comments_row( $comment );
} else {
if ( 'single' == $_REQUEST['mode'] ) {
$wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
} else {
$wp_list_table = _get_list_table('WP_Comments_List_Table');
}
$wp_list_table->single_row( $comment );
}
$comment_list_item = ob_get_contents();
ob_end_clean();
$response = array(
'what' => 'comment',
'id' => $comment->comment_ID,
'data' => $comment_list_item,
'position' => $position
);
if ( $comment_auto_approved )
$response['supplemental'] = array( 'parent_approved' => $parent->comment_ID );
$x = new WP_Ajax_Response();
$x->add( $response );
$x->send();
}
I want to override this part only:
if ( '' == $comment_content )
wp_die( __( 'ERROR: please type a comment.' ) );
Here is my code which is placed in my theme's functions.php
function my_function_name() {
if ( '' == $comment_content )
wp_die( __( 'My custom message here' ) );
}
add_filter( 'wp_ajax_replyto_comment', 'my_function_name' );
Unfortunately, my code doesn't work. Please help me! Thanks!
There are certain functions that are "pluggable", where you can override them, but that is not one of them.
The only way to adjust the core functionality is with action hooks and filters, unless you want to just go in and edit the core directly (bad practice... upgrading the core will overwrite your changes).
If you find a do_action('something'); in the core, you can hook in with add_action('something','my_function');.
If you find an apply_filters('something', $value) in the core, you can filter that $value with add_filter('something', 'my_function');.
By the way, in the above example, you would do:
function my_function($value){
// manipulate $value
return $value;
}
Make sure to return something as the filtered value. Unfortunately I can't seem to find anywhere to hook into for this :(.
See http://codex.wordpress.org/Plugin_API for more info.
If you MUST change that text, you could do it after the page loads with javascript.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With