✅Campos PERSONALIZADOS en los Comentarios de WordPress (Sin Plugins)

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

campos personalizados comentarios wordpress sin plugins

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.

5/5 - (4 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%