0

I have used the following source code to add an extra city field to my WordPress comment form:

<?php
/*
  Plugin Name: Comment meta data test
  Version: 1.0
  Plugin URI: http://wpengineer.com
  Description: Comment meta data test
  Author: Latz
  Author URI: http://wpengineer.com
 */

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">'. __('CITY') . '</label>

                <input id="city" name="city" size="30" type="text" /></p>';

    return $default;
}

add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data($commentdata) {
  if ( ! isset( $_POST['city'] ) )
        wp_die( __('Error: please fill the required field (city).') );
        return $commentdata;
}

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

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;
}

?>

This shows the extra field and comment form, and its output is displayed along with the comment author name.

However, I want to display only the city name, without the author name. How can I do this?

1 Answer 1

0

Seems pretty much simple:

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;
}

Unless if you are adding the city name somewhere else and wanted to remove comment author name then call add_filter('get_comment_author', '__return_false');

Hope that helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.