Agregar Campo Personalizado en Comentarios

28 jun 2012, 09:33:41
Vistas: 19.9K
Votos: 1

He buscado en muchos hilos sobre mi problema, pero desafortunadamente no encontré nada que funcione, y esta es mi última opción. Quiero agregar algunos campos personalizados en mi formulario de comentarios. ¿Cómo puedo hacer eso?

0
Todas las respuestas a la pregunta 2
0
10

Aquí tienes: ¿Cómo agregar campos personalizados a los formularios de comentarios de WordPress?

Y otro post excelente sobre esto: http://wpengineer.com/2214/adding-input-fields-to-the-comment-form/

Existen funciones para agregar/actualizar y eliminar metadatos de comentarios, similares a los metadatos de entradas y usuarios.

Edición: Aquí un ejemplo para empezar (coloca este código en el archivo functions.php o en un plugin personalizado):

Agregar campos al formulario de comentarios:

add_filter( 'comment_form_defaults', 'change_comment_form_defaults');
function change_comment_form_defaults( $default ) {
    $commenter = wp_get_current_commenter();
    $default[ 'fields' ][ 'email' ] .= '<p class="comment-form-author">' .
                                            '<label for="city">'. __('Ciudad') . '</label>
                                        <span class="required">*</span>
                                        <input id="city" name="city" size="30" type="text" /></p>';
    return $default;
}

4 funciones para recuperar/agregar/actualizar/eliminar metadatos de comentarios:

get_comment_meta( $comment_id, $meta_key, $single = false );
add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
update_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
delete_comment_meta( $comment_id, $meta_key, $single = false );

Aquí es donde harías las validaciones:

add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data( $commentdata ) {
    if ( ! isset( $_POST['city'] ) )
        wp_die( __( 'Error: por favor completa el campo requerido (ciudad).' ) );
    return $commentdata;
}

Y guardar los metadatos del comentario:

add_action( 'comment_post', 'save_comment_meta_data' );
function save_comment_meta_data( $comment_id ) {
    add_comment_meta( $comment_id, 'city', $_POST[ 'city' ] );
}

Recuperar y mostrar los metadatos del comentario:

add_filter( 'get_comment_author_link', 'attach_city_to_author' );
function attach_city_to_author( $author ) {
    $city = get_comment_meta( get_comment_ID(), 'city', true );
    if ( $city )
        $author .= " ($city)";
    return $author;
}

(Nota: Todo el código proviene del enlace de WPengineer que mencioné arriba. Hay más detalles y usos avanzados en ese post, ¡revisa también eso!)

28 jun 2012 10:01:45
2

Esta presentación de Beau Lebens debería mostrarte cómo hacerlo: Conectar con los comentarios

Y esta entrada de blog de Otto podría mostrarte más: Consejo para temas de WordPress 3.0: El formulario de comentarios

También hay un plugin básico disponible llamado "Wordpress Plugin: Campos adicionales para comentarios" (disculpas, no puedo publicar el enlace).

28 jun 2012 10:02:56
Comentarios

Los enlaces pueden eliminarse. Por favor, mejora tu respuesta con parte del contenido que encontraste en los enlaces. Lo mejor sería agregar un ejemplo.

kaiser kaiser
28 jun 2012 10:31:20

gracias por la respuesta amigo, también me ayudó pero prefiero elegir la respuesta de rutwick. Gracias :)

markyeoj markyeoj
28 jun 2012 10:41:12