El siguiente código personaliza la experiencia de comentarios en un sitio WordPress al agregar campos adicionales al formulario de comentarios.
Esta funcionalidad enriquece la interacción al ofrecer a los usuarios la oportunidad de compartir detalles más específicos y contextualizados en sus comentarios. Estos campos personalizados son visibles solo para usuarios registrados, lo que fomenta una participación más detallada y estructurada.
Además, el código también deshabilita el enlace de respuesta a comentarios, simplificando la interfaz y dirigiendo la atención hacia la información personalizada proporcionada por los usuarios. Este enfoque directo ofrece una manera efectiva de mejorar la participación y la calidad de los comentarios en el sitio.
En el ejemplo vamos a crear varios campos personalizados relacionados con la temática del cine y solo se mostrarán en el formulario de comentarios si la categoría de la entrada es ‘Películas’. Si es otra categoría se mostrará el formulario predeterminado de comentarios de WordPress

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
// Función para agregar campos personalizados al formulario de comentarios
function agregar_campos_personalizados_comentario() {
if ( is_single() && has_category( 'peliculas' ) && is_user_logged_in() ) {
// Campo de título
echo '<p class="comment-form-title">
<label for="title">Título:</label>
<input type="text" name="title" id="title" />
</p>';
// Campo de año
echo '<p class="comment-form-year">
<label for="year">Año:</label>
<input type="text" name="year" id="year" />
</p>';
// Campo de género
echo '<p class="comment-form-genre">
<label for="genre">Género:</label>
<input type="text" name="genre" id="genre" />
</p>';
// Campo de sinopsis
echo '<p class="comment-form-synopsis">
<label for="synopsis">Sinopsis:</label>
<textarea name="synopsis" id="synopsis"></textarea>
</p>';
}
}
// Agregar campos personalizados al formulario de comentarios
add_action('comment_form_logged_in_after', 'agregar_campos_personalizados_comentario');
add_action('comment_form_after_fields', 'agregar_campos_personalizados_comentario');
// Función para guardar datos de metadatos personalizados del comentario
function guardar_datos_meta_comentario( $comment_id ) {
if ( isset( $_POST['title'] ) ) {
$title = sanitize_text_field( $_POST['title'] );
add_comment_meta( $comment_id, 'title', $title );
}
if ( isset( $_POST['year'] ) ) {
$year = sanitize_text_field( $_POST['year'] );
add_comment_meta( $comment_id, 'year', $year );
}
if ( isset( $_POST['genre'] ) ) {
$genre = sanitize_text_field( $_POST['genre'] );
add_comment_meta( $comment_id, 'genre', $genre );
}
if ( isset( $_POST['synopsis'] ) ) {
$synopsis = sanitize_textarea_field( $_POST['synopsis'] );
add_comment_meta( $comment_id, 'synopsis', $synopsis );
}
}
// Guardar datos de metadatos personalizados cuando se publica un comentario
add_action( 'comment_post', 'guardar_datos_meta_comentario' );
// Función para mostrar datos de metadatos personalizados en el texto del comentario
function mostrar_datos_meta_comentario( $comment_text ) {
$title = get_comment_meta( get_comment_ID(), 'title', true );
$year = get_comment_meta( get_comment_ID(), 'year', true );
$genre = get_comment_meta( get_comment_ID(), 'genre', true );
$synopsis = get_comment_meta( get_comment_ID(), 'synopsis', true );
// Mostrar título si está disponible
if ( $title ) {
$comment_text .= '<p class="comment-meta-title"><b>Título:</b> ' . esc_html( $title ) . '</p>';
}
// Mostrar año si está disponible
if ( $year ) {
$comment_text .= '<p class="comment-meta-year"><b>Año:</b> ' . esc_html( $year ) . '</p>';
}
// Mostrar género si está disponible
if ( $genre ) {
$comment_text .= '<p class="comment-meta-genre"><b>Género:</b> ' . esc_html( $genre ) . '</p>';
}
// Mostrar sinopsis si está disponible
if ( $synopsis ) {
$comment_text .= '<p class="comment-meta-synopsis"><b>Sinopsis:</b> ' . esc_html( $synopsis ) . '</p>';
}
return $comment_text;
}
// Filtro para mostrar datos de metadatos personalizados en el texto del comentario
add_filter( 'comment_text', 'mostrar_datos_meta_comentario' );
// Función para deshabilitar el enlace de respuesta a comentarios
function desactivar_enlace_respuesta_comentario( $link ) {
return '';
}
// Filtro para deshabilitar el enlace de respuesta a comentarios
add_filter( 'comment_reply_link', 'desactivar_enlace_respuesta_comentario' );
Lenguaje del código: PHP (php)
Entendiendo el Código
1. Agregar Campos Personalizados al Formulario de Comentarios
La función agregar_campos_personalizados_comentario() se encarga de agregar campos personalizados al formulario de comentarios. Estos campos incluyen:
- Título: Un campo de texto para ingresar el título de la película.
- Año: Un campo de texto para ingresar el año de la película.
- Género: Un campo de texto para ingresar el género de la película.
- Sinopsis: Un campo de área de texto para ingresar una sinopsis de la película.
Se verifica si la página actual es una entrada individual (is_single()), si pertenece a la categoría ‘peliculas’ (has_category('peliculas')), y si el usuario ha iniciado sesión (is_user_logged_in()). La condición completa asegura que los campos personalizados se agregarán solo en las entradas individuales de la categoría ‘peliculas’ cuando el usuario esté autenticado.
2. Guardar Datos de Metadatos Personalizados del Comentario
La función guardar_datos_meta_comentario($comment_id) se encarga de guardar los datos ingresados en los campos personalizados como metadatos asociados al comentario correspondiente. Utiliza la función add_comment_meta() para almacenar estos datos en la base de datos de WordPress.
3. Mostrar Datos de Metadatos Personalizados en el Texto del Comentario
La función mostrar_datos_meta_comentario($comment_text) se utiliza como un filtro para modificar el texto del comentario y agregar los datos personalizados almacenados como metadatos. Estos datos se obtienen utilizando la función get_comment_meta(). Cada tipo de dato (título, año, género, sinopsis) se muestra en párrafos distintos, con un formato claro y legible.
4. Deshabilitar el Enlace de Respuesta a Comentarios
La función desactivar_enlace_respuesta_comentario($link) y el filtro asociado comment_reply_link deshabilitan el enlace de respuesta a comentarios. Este enfoque puede ser útil si deseas simplificar la interfaz de comentarios y fomentar que los usuarios se centren en agregar información personalizada.
Si estás buscando llevar tu sitio web al siguiente nivel, ¡has llegado al lugar correcto! Con el código proporcionado, ahora tus usuarios pueden añadir un toque personal a sus comentarios, haciendo que la interacción en tu sitio sea aún más especial.
Si deseas personalizar aún más tu código o cualquier otra funcionalidad en WordPress, no dudes en visitar mi sitio web PluginsWeb.es. Ofrezco servicios especializados para adaptar y mejorar tu sitio web de acuerdo con tus necesidades específicas. ¡La personalización está a solo un clic de distancia!
Nos vemos en el siguiente tutorial.
Un saludo.




Deja tus opiniones o dudas en los comentarios.