Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Is there any way that I can have a website user be able to contact a post author. The website user must not be required to be logged in to the website. I guess a form to email the post author might be the way to go, but it must be simple to use, and avoid spam. Is there such a plugin for wordpress that can handle this?

share|improve this question
    
Contact Form 7 or Gravity Forms is the way to go, a couple of simple hooks pulled at the correct time and it will be routed to the $post->post_author's email. –  soulseekah Mar 23 '12 at 14:05
add comment

2 Answers 2

up vote 1 down vote accepted

Ive done this before using both contact form 7 and Grunion Contact Form plugins, when using contact form 7 i created a new tag to send the email to the post author:

//contact form 7 author email
wpcf7_add_shortcode('author_email', 'wpcf7_expert_email_shortcode_handler', true);

function wpcf7_expert_email_shortcode_handler($tag) {
    if (!is_array($tag)) return '';

    $name = $tag['name'];
    if (empty($name)) return '';
    global $post;
    //get author email:
    $author_mail = get_the_author_meta('user_email',$post->post_author);
    $html = '<input type="hidden" name="' . $name . '" value="' . $author_mail . '" />';
    return $html;
}

/*
* Usage: in contact form 7 form area add
* [author_email unique_name]
* and in to email address add
* [unique_name]
*/

and with Grunion i called it directly from the template using:

global $post;
$author_mail = get_the_author_meta('user_email',$post->post_author);
echo do_shortcode('[contact-form subject="message from.'$post->post_title.'" to="'.$author_mail.'"]');
share|improve this answer
    
Thanks Bainternet! –  robgt Mar 30 '12 at 12:56
add comment

I've been using the Grunion Contact Form for this. Works like a charm. Ties into Akismet for spam filtering. It's very simple to use--you can insert a shortcode into your post content, or insert a "do shortcode" function into your template. Works either way.

share|improve this answer
    
Thanks Adam! I've accepted Bainternet's answer purely as it also included the required code to achieve the objective. Many thanks to you both! –  robgt Mar 30 '12 at 12:56
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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