Publié le 2 décembre 2013 dans CMS WordPress

Après avoir essayé de modifier les titres et les champs du formulaire de commentaire en vain pendant plusieurs minutes, j’ai trouvée une solution vraiment toute bête mais il fallait y penser !

Et mon astuce fonctionne SANS toucher au core – ce qui est mieux car sinon avec les mise à jour vos modifications sauterons !

Et ben vous avez juste à copiez le code de la fonction comment_form() qui est situé dans le fichier wp-includes/comment-templates.php, de la coller dans votre fichier de fonction(wp-content/themes/votre_theme/function.php) et de la renommer – par exemple comment_form_modifs() !

Maintenant vous pouvez faire toutes les modifs que vous voulez, elles seront prises en compte directement !

EDIT : Oups, merci à l’un de mes lecteur de m’avoir fait par d’un petit oubli !
Pour dire à WordPress d’utiliser votre fonction et non celle de base, il faut remplacer l’appel à la fonction comment_form(); (ligne 38 du fichier comments.php (thème twentythirteen)) par celle que vous avez créé, par exemple comment_form_modifs();

Fonction initiale:

<?php
function comment_form($args = array(), $post_id = null){
	global $id;

	if(null === $post_id) $post_id = $id; else $id = $post_id;

	$commenter = wp_get_current_commenter();
	$user = wp_get_current_user();
	$user_identity = $user->exists() ? $user->display_name: '';

	$req = get_option('require_name_email');
	$aria_req =($req ? " aria-required='true'": '');
	$fields =  array(
		'author' => '<p class="comment-form-author">'.'<label for="author">'.__('Name') .($req ? ' <span class="required">*</span>': '').'</label> ' . '</p>',
		'email'  => '<p class="comment-form-email"><label for="email">'.__('Email') .($req ? ' <span class="required">*</span>': '').'</label> ' . '</p>',
		'url'    => '<p class="comment-form-url"><label for="url">'.__('Website').'</label>' . '</p>',
	);
	$required_text = sprintf(' '.__('Required fields are marked %s'), '<span class="required">*</span>');
	$defaults = array(
		'fields'               => apply_filters('comment_form_default_fields', $fields),
		'comment_field'        => '<p class="comment-form-comment"><label for="comment">'._x('Comment', 'noun').'</label><textarea id="comment" cols="45" name="comment" rows="8"></textarea></p>', 
		'must_log_in' => '<p class="must-log-in">'.sprintf(__('You must be <a href="%s">logged in</a> to post a comment.'), wp_login_url(apply_filters('the_permalink', get_permalink($post_id)))).'</p>', 
		'logged_in_as' => '<p class="logged-in-as">'.sprintf(__('Logged in as <a href="%1$s">%2$s</a>. <a title="Log out of this account" href="%3$s">Log out?</a>'), get_edit_user_link(), $user_identity, wp_logout_url(apply_filters('the_permalink', get_permalink($post_id)))).'</p>',
		'comment_notes_before' => '<p class="comment-notes">'.__('Your email address will not be published.') .($req ? $required_text: '').'</p>', 
		'comment_notes_after' => '<p class="form-allowed-tags">'.sprintf(__('You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s'), ' <code>'.allowed_tags().'</code>').'</p>', 
		'id_form' => 'commentform', 
		'id_submit' => 'submit', 
		'title_reply' => __('Leave a Reply'), 
		'title_reply_to' => __('Leave a Reply to %s'), 
		'cancel_reply_link' => __('Cancel reply'), 
		'label_submit' => __('Post Comment'), ); $args = wp_parse_args($args, apply_filters('comment_form_defaults', $defaults));
		?>
	
<div id="respond">
<h3 id="reply-title"> </h3>
<form id="" action="" method="post">$field){ echo apply_filters("comment_form_field_{$name}", $field)."n"; } do_action('comment_form_after_fields'); ?>
<p class="form-submit"><input id="" name="submit" type="submit" value="" /></p>
</form></div><!-- #respond -->
<?php
		do_action("comment_form_after");
	else:
		do_action("comment_form_comments_closed");
	endif;
}

Fonction modifiée:

function comment_form_modifs($args = array(), $post_id = null){
	global $id;

	if(null === $post_id) $post_id = $id; else $id = $post_id;

	$commenter = wp_get_current_commenter();
	$user = wp_get_current_user();
	$user_identity = $user->exists() ? $user->display_name: '';

	$req = get_option('require_name_email');
	$aria_req =($req ? " aria-required='true'": '');
	$fields =  array(
		'author' => '',
		'email'  => '',
	);

	$required_text = sprintf(' '.__('Required fields are marked %s'), '<span class="required">*</span>');
	$defaults = array(
		'fields'               => apply_filters('comment_form_default_fields', $fields),
		'comment_field'        => '<textarea id="comment" class="comment-form-comment" cols="45" name="comment" rows="8"></textarea>', 
		'must_log_in' => '<p class="must-log-in">'.sprintf(__('You must be <a href="%s">logged in</a> to post a comment.'), wp_login_url(apply_filters('the_permalink', get_permalink($post_id)))).'</p>', 
		'logged_in_as' => '<p class="logged-in-as">'.sprintf(__('Logged in as <a href="%1$s">%2$s</a>. <a title="Log out of this account" href="%3$s">Log out?</a>'), get_edit_user_link(), $user_identity, wp_logout_url(apply_filters('the_permalink', get_permalink($post_id)))).'</p>', 
		'id_form' => 'commentform', 
		'id_submit' => 'submit', 
		'title_reply' => __('Ask us your questions about this product', 'twentytwelve'), 
		'title_reply_to' => __('Leave a question to %s', 'twentytwelve'), 
		'cancel_reply_link' => __('Cancel question', 'twentytwelve'), 
		'label_submit' => __('Send', 'twentytwelve'),
	);
	$args = wp_parse_args($args, apply_filters('comment_form_defaults', $defaults)); 
	if(comments_open($post_id)): do_action('comment_form_before'); echo '<div id="respond">';
		echo '<h3 id="reply-title">';
		comment_form_title($args['title_reply'], $args['title_reply_to']);
		echo '<small>';
		cancel_comment_reply_link($args['cancel_reply_link']);
		echo '</small></h3>';
		if(get_option('comment_registration') && !is_user_logged_in()): 
			echo $args['must_log_in']; 
			do_action('comment_form_must_log_in_after');
		else:
			echo '<form id="'.esc_attr($args['id_form']).'" action="'.site_url('/wp-comments-post.php').'" method="post">';
			do_action('comment_form_top');
			if(is_user_logged_in()):
				echo apply_filters('comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity);
				do_action('comment_form_logged_in_after', $commenter, $user_identity);
			else:
				echo $args['comment_notes_before'];
				do_action('comment_form_before_fields');
				foreach((array) $args['fields'] as $name => $field){
					echo apply_filters("comment_form_field_{$name}", $field)."n";
				}
				do_action('comment_form_after_fields');
			endif;
			echo apply_filters('comment_form_field_comment', $args['comment_field']);
			echo $args['comment_notes_after'];
			echo '<p class="form-submit">';
			echo '';
			comment_id_fields($post_id);
			echo '</p>';
			do_action('comment_form', $post_id);
			echo '</form>';
		endif;
		echo '</div>'; // #respond
		do_action('comment_form_after');
	else:
		do_action('comment_form_comments_closed');
	endif;
}

Sinon, si vous voulez juste ajouter ou supprimer une champs, il y a également ce tuto: Personnaliser les champs du formulaire de commentaire