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.

I am writing a plugin that displays custom home page that is in fact only one post with comments. The first time home page is displayed by the initial call by php. Then user can click a menu button to get another post. This is handled by ajax. So the whole page does not reload.

Getting and displaying other posts via ajax works fine till I 'refresh' the page via ajax. Then the comment reply link doesn't work any more.

I implemented [AJAXified commenting system][1] but I guess it has nothing to do with reply link.

Reply link before ajax is used looks like

<a onclick="return addComment.moveForm(&quot;div-comment-11&quot;, &quot;11&quot;, &quot;respond&quot;, &quot;8&quot;)" 
href="/?replytocom=11#respond" class="comment-reply-link">Reply</a>

When the same post is loaded via ajax the reply button looks like

<a onclick="return addComment.moveForm(&quot;div-comment-11&quot;, &quot;11&quot;, &quot;respond&quot;, &quot;8&quot;)" 
href="/wp-admin/admin-ajax.php?replytocom=11#respond" class="comment-reply-link">Reply</a>

The difference is in the href attribute. The second (ajax) one got wp-admin/admin-ajax.php part that does not supposed to be there.

I use one php function to generate html for both the fist time post is being displayed and for ajax call too.

Part of the function looks like

   function my_get_comments($post_id, $number_of_comments){
    //Gather comments for a specific post 
    $comments =     get_comments(array(
        'number' => $number_of_comments,
        'post_id' => $post_id,
        'status' => 'approve' //Change this to the type of comments to be displayed
    ));

    ob_start(); //workaround how to capture the output from comments_number() function
        comments_number( 'no comments', 'one comment', '% comments' );
    $capture_comments_number = ob_get_clean();

    $return_string ='<div id="comments_container">'
                    . '<style type="text/css">.hidden{display:none;}</style>'
                    . '<div id="comments_number">'
                        . $capture_comments_number
                        . '<a class="comment_switch"> Show / Hide Comments</a>'
                    . '</div>'
                    . '<div class="comments">'
                    . '<ol class="commentlist">';


    //Display / format the list of comments

    ob_start(); //workaround how to capture the output from wp_list_comments() function
        wp_list_comments(array(
            'reverse_top_level' => false //Show the latest comments at the top of the list
        ), $comments);
    $capture_wp_list_comments = ob_get_clean();
    return $return_string;
}

    ob_start(); //workaround how to capture the output from comment_form() function
        comment_form("", $post_id);
    $capture_comment_form = ob_get_clean();


    $return_string = $return_string 
                . $capture_comment_form
                . '</div>'
                . '</div>';

I need to fix the href part of the reply link?

share|improve this question
    
Your link is gone/not here. –  kaiser Oct 31 '13 at 13:05

1 Answer 1

I realized that comment-reply.js is not loaded and it fixed the issue.

Could someone explain? I have no idea what happened.

So the fix was adding wp_enqueue_script( 'comment-reply' ); to my plugin code.

share|improve this answer
    
If you show us when and where you add the reply script in your theme, then yes, we'd be able to explain :) –  kaiser Oct 31 '13 at 13:06
    
I updated the code in my questions. It is just after the code that I posted the first time.... –  Radek Nov 16 '13 at 9:14

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.