El botón de “Publicar comentario” que desaparece al actualizar a WordPress 4.2

En algunos casos, después de actualizar instalaciones de WordPress a la versión 4.2, el botón de “Publicar comentario” desaparece. El sitio web sigue funcionando correctamente, pero las visitas no pueden llegar a enviar los mensajes.

Esto sólo ocurre si estamos utilizando una versión personalizada de la plantilla de comentarios. En la mayoría de casos no hay problema porque, o bien los comentarios no están activados, o bien el tema utiliza la plantilla por defecto o no hace ningún cambio significativo en el formulario y la presentación de los comentarios. Esto dependerá de cómo esté construido cada tema.

La solución no es complicada, siempre y cuando estemos acostumbrados a editar el código de las plantillas. Si no es así, conviene pedir ayuda al creador del tema para que nos eche una mano.

Desde la versión 4.2.0, para que este formulario se muestre completo, es necesario proporcionar nuevos argumentos a comment_form(), la función encargada de dibujar el formulario de comentarios en las plantillas de WordPress.

Estos dos argumentos nuevos son ‘submit_button‘ y ‘submit_fields‘. Desde esta versión, si estos dos argumentos no están definidos, no se podrán publicar comentarios (ni tampoco nos llegará spam, lo cual puede ser la señal de que algo no anda bien).

Esto está documentado en el archivo “wp-includes/comment-template.php”. Ahí encontraremos la lista completa de argumentos (algunos necesarios y otros opcionales) relacionados con el botón “submit”, que se encarga de enviar el comentario a la base de datos:

/**
 *
 * @since 4.1.0 Introduced the 'class_submit' argument.
 * @since 4.2.0 Introduced 'submit_button' and 'submit_fields' arguments.
 *
 * @type string $id_submit            The comment submit element id attribute. Default 'submit'.

 * @type string $class_submit         The comment submit element class attribute. Default 'submit'.

 * @type string $name_submit          The comment submit element name attribute. Default 'submit'.

 * @type string $label_submit         The translatable 'submit' button label. Default 'Post a comment'.

 * @type string $submit_button        HTML format for the Submit button.
 *                                    Default: '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />'.

 * @type string $submit_field         HTML format for the markup surrounding the Submit button and comment hidden
 *                                        fields. Default: '<p class="form-submit">%1$s %2$s</a>', where %1$s is the
 *                                        submit button markup and %2$s is the comment hidden fields.
 */

Para que todo vuelva a funcionar correctamente, podemos utilizar el valor por defecto para cada argumento. $submit_button contiene el formato HTML para el botón Submit (el elemento “input” y sus atributos), mientras que $submit_field incluye el formato HTML para el código que rodea al botón de envío y los campos ocultos.

La función con todos los argumentos relacionados con Submit quedará así:

function custom_comment_form_args( $defaults ) {
	$defaults = array(
		'id_submit' => 'submit',
		'class_submit' => 'submit', // Nuevo en 4.1.0
		'name_submit' => 'submit',
		'label_submit' => __('Post a comment'),
		'submit_button' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />', // Nuevo en 4.2.0
		'submit_field' => '<p class="form-submit">%1$s %2$s</p>' // Nuevo en 4.2.0

	);
	return $defaults;
}
add_filter( 'comment_form_defaults', 'custom_comment_form_args' );

Comentarios

  1. EMD

    Buen post, me ha sido de gran utilidad.

  2. Jimmy

    Que pedazo de articulos tienes en el blog macho… enhorabuena.

Y tú qué opinas?

Las URLs se convertirán en enlaces automáticamente. Tu dirección de email no se publicará ni se utilizará para enviar ningún tipo de información. Los mensajes que no aporten nada al tema que se trata en esta entrada se borrarán. Las imágenes que aparecen al lado de cada autor utilizan el servicio de Gravatar. Recuerda que puedes usar etiquetas HTML como <a href>, <code>, <em> o <strong> en los comentarios.

(necesario)

(opcional)