Viewing 15 replies - 1 through 15 (of 20 total)
  • Plugin Author myCred

    (@designbymerovingi)

    As it stands right now, users must be logged in to get points for comments and the same goes for the authors as myCRED saves the commenters ID as a reference to prevent duplicate points for the same comment.

    I will look into changing this somehow in future versions but till then your only option is to hook into the ‘transition_comment_status’ action and/or ‘comment_post’ action and award points to the author if the commenter is not a member.

    I’m in desperate need of a fix for this too.

    Gabriel can you show us how to hook into these to award points to author if the commenter is not a user. I’m not as knowledgable as you all are with programming.

    Plugin Author myCred

    (@designbymerovingi)

    Here is a basic example that awards 1 point for each approved comment to the content author. You can customize the amount and log template to your liking.

    add_action( 'transition_comment_status', array( $this, 'comment_transitions' ), 10, 3 );
    function award_points_for_guest_comments( $new_status, $old_status, $comment )
    {
    	// Look for approved comments
    	if ( $new_status != 'approved' ) return;
    
    	// Grab the comment object in case it is not there
    	if ( !is_object( $comment ) )
    		$comment = get_comment( $comment );
    
    	// Ignore Pingbacks or Trackbacks
    	if ( !empty( $comment->comment_type ) ) return;
    
    	// Get post author
    	$post = get_post( (int) $comment->comment_post_ID );
    	$post_author = $post->post_author;
    
    	// Check if the post author should be excluded
    	if ( mycred_exclude_user( $post_author ) === true ) return;
    
    	// Award points to author
    	mycred_add(
    		'new_comment', // reference
    		$post_author, // who to get points
    		1, // number of points to award
    		'%plural% for new comment on post', // log template to use
    		$comment->comment_ID, // save comment id as reference id
    		array( 'ref_type' => 'comment' ) // enable support for comment related template tags
    	);
    }

    Wow I’m going to try this out. Cheers for the added comments!

    How do I support this plugin? Do you have a paypal donation or similar setup?

    Plugin Author myCred

    (@designbymerovingi)

    Hey Lars.

    You can either donate cups of coffee or visit the store.
    Thank you in advanced.

    This plugin saves me thousands of pounds, so yes, I will support it and so should many others.

    I added the code in my function.php file but it did not function. Made a guest comment but nothing was updated in the logs. Did this work for you (using 1.3)?

    And when permanently deleting a comment, these warnings are shown:

    Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /public_html/wp-includes/plugin.php on line 406

    Warning: Cannot modify header information – headers already sent by (output started at /public_html/wp-includes/plugin.php:406) in /public_html/wp-includes/class-wp-ajax-response.php on line 129

    Plugin Author myCred

    (@designbymerovingi)

    Upps, I see I was a bit to quick in copy pasting. The issue is the hook is incorrect. It should be:

    add_action( 'transition_comment_status', 'award_points_for_guest_comments', 10, 3 );

    Added your fix but is still not working. Posted guest comment and no update in the logs. Maybe I am doing something wrong?

    This is the complete code that I use:

    add_action( 'transition_comment_status', 'award_points_for_guest_comments', 10, 3 );
    function award_points_for_guest_comments( $new_status, $old_status, $comment )
    {
    	// Look for approved comments
    	if ( $new_status != 'approved' ) return;
    
    	// Grab the comment object in case it is not there
    	if ( !is_object( $comment ) )
    		$comment = get_comment( $comment );
    
    	// Ignore Pingbacks or Trackbacks
    	if ( !empty( $comment->comment_type ) ) return;
    
    	// Get post author
    	$post = get_post( (int) $comment->comment_post_ID );
    	$post_author = $post->post_author;
    
    	// Check if the post author should be excluded
    	if ( mycred_exclude_user( $post_author ) === true ) return;
    
    	// Award points to author
    	mycred_add(
    		'new_comment', // reference
    		$post_author, // who to get points
    		1, // number of points to award
    		'Guest comment on <a href=%c_post_url%>%c_post_title%</a>', // log template to use
    		$comment->comment_ID, // save comment id as reference id
    		array( 'ref_type' => 'comment' ) // enable support for comment related template tags
    	);
    }
    Plugin Author myCred

    (@designbymerovingi)

    A few things to try:

    1. Enable WP_DEBUG in your wp-config.php file when you approve a comment to see if you get any error messages.
    2. Make sure the post author is not set to be excluded from using myCRED

    I enabled WP_DEBUG and it did not show errors, only these warnings:

    Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at public_html/wp-content/plugins/w3-total-cache/lib/W3/Cache/Memcached.php:15) in public_html/wp-content/plugins/myqaptcha/myQaptcha.php on line 44

    Warning: Cannot modify header information – headers already sent by (output started at public_html/wp-content/plugins/w3-total-cache/lib/W3/Cache/Memcached.php:15) in public_html/wp-includes/comment.php on line 621

    Warning: Cannot modify header information – headers already sent by (output started at public_html/wp-content/plugins/w3-total-cache/lib/W3/Cache/Memcached.php:15) in public_html/wp-includes/comment.php on line 622

    Warning: Cannot modify header information – headers already sent by (output started at public_html/wp-content/plugins/w3-total-cache/lib/W3/Cache/Memcached.php:15) in public_html/wp-includes/comment.php on line 623

    Warning: Cannot modify header information – headers already sent by (output started at public_html/wp-content/plugins/w3-total-cache/lib/W3/Cache/Memcached.php:15) in public_html/wp-includes/pluggable.php on line 875

    About your second step, I’m not sure what you mean. I have not excluded any users from using myCRED. And I tried guest commenting on more than one post.

    Did that code work on your test environment?

    Cheers for the support!

    Plugin Author myCred

    (@designbymerovingi)

    I think the issue is that the above code only works if you have setup to approve comments. If a comment is approved without moderation you would need to add more.

    Try this (replacing your old code):

    if ( function_exists( 'mycred_add' ) ) {
    	add_action( 'comment_post',              'award_new_guest_comments', 10, 2 );
    	function award_new_guest_comments( $comment_id, $comment_status )
    	{
    		if ( $comment_status == '1' )
    			award_points_for_guest_comments( 'approved', '', $comment_id );
    	}
    	add_action( 'transition_comment_status', 'award_points_for_guest_comments', 10, 3 );
    	function award_points_for_guest_comments( $new_status, $old_status, $comment )
    	{
    		// Look for approved comments
    		if ( $new_status != 'approved' ) return;
    
    		// Grab the comment object in case it is not there
    		if ( !is_object( $comment ) )
    			$comment = get_comment( $comment );
    
    		// Ignore Pingbacks or Trackbacks
    		if ( !empty( $comment->comment_type ) ) return;
    
    		// Get post author
    		$post = get_post( (int) $comment->comment_post_ID );
    		$post_author = $post->post_author;
    
    		// Check if the post author should be excluded
    		if ( mycred_exclude_user( $post_author ) === true ) return;
    
    		// Award points to author
    		mycred_add(
    			'new_comment', // reference
    			$post_author, // who to get points
    			1, // number of points to award
    			'Guest comment on <a href=%c_post_url%>%c_post_title%</a>', // log template to use
    			$comment->comment_ID, // save comment id as reference id
    			array( 'ref_type' => 'comment' ) // enable support for comment related template tags
    		);
    	}
    }
    Plugin Author myCred

    (@designbymerovingi)

    THe above code will work both with non-moderated comments and if you manually approve a comment.

    And it did! You are a star! Cheers for your hard work, it doesn’t go unnoticed.

    Plugin Author myCred

    (@designbymerovingi)

    Awesome! Ill mark this as resolved.
    Let me know if you have any further issues.

Viewing 15 replies - 1 through 15 (of 20 total)
  • The topic ‘Guest comments not affecting comment points?’ is closed to new replies.