0

I used this code to show latest comment list in user profile: in functions.php:

add_shortcode ( 'show_recent_comments', 'show_recent_comments_handler' );

function show_recent_comments_handler( $atts, $content = null )
{
    extract( shortcode_atts( array( 
        "count" => 20,
        "pretty_permalink" => 0
        ), $atts ));

    $output = ''; // this holds the output

    if ( is_user_logged_in() )
    {
    global $current_user;
    get_currentuserinfo();

    $args = array(
        'user_id' => $current_user->ID,
        'number' => $count, // how many comments to retrieve
        'status' => 'approve'
        );
    $comments = get_comments( $args );
    if ( $comments )
    {
        $output.= "<ul>\n";
        foreach ( $comments as $c )
        {
        $output.= '<li>';
        if ( $pretty_permalink ) // uses a lot more queries (not recommended)
            $output.= '<a href="'.get_comment_link( $c->comment_ID ).'">';
        else
            $output.= '<span id="cm-txt">متن دیدگاه : </span><a href="'.get_settings('siteurl').'/?p='.$c->comment_post_ID.'#comment-'.$c->comment_ID.'">';         
        $output.= wp_trim_words($c->comment_content, 20, '...');
        $output.= '</a><p>در پست: ' . get_the_title($c->comment_post_ID);
        $output.= "</li>\n";
        }
        $output.= '</ul>';
        }
    }
    return $output;
}

and in user-comments.php:

<?php echo do_shortcode( '[show_recent_comments]' ); ?>

I want to show pagination for example more than 20 comment list in user-comments.php. is there any way to do that?

0

You should use append paginate_comments_links() into $output like so:

add_shortcode ( 'show_recent_comments', 'show_recent_comments_handler' );

function show_recent_comments_handler( $atts, $content = null )
{
    extract( shortcode_atts( array( 
        "count" => 20,
        "pretty_permalink" => 0
        ), $atts ));

    $output = ''; // this holds the output

    if ( is_user_logged_in() )
    {
    global $current_user;
    get_currentuserinfo();

    $args = array(
        'user_id' => $current_user->ID,
        'number' => $count, // how many comments to retrieve
        'status' => 'approve'
        );
    $comments = get_comments( $args );
    if ( $comments )
    {
        $output.= "<ul>\n";
        foreach ( $comments as $c )
        {
        $output.= '<li>';
        if ( $pretty_permalink ) // uses a lot more queries (not recommended)
            $output.= '<a href="'.get_comment_link( $c->comment_ID ).'">';
        else
            $output.= '<span id="cm-txt">متن دیدگاه : </span><a href="'.get_settings('siteurl').'/?p='.$c->comment_post_ID.'#comment-'.$c->comment_ID.'">';         
        $output.= wp_trim_words($c->comment_content, 20, '...');
        $output.= '</a><p>در پست: ' . get_the_title($c->comment_post_ID);
        $output.= "</li>\n";
        }
        $output.= '</ul>';
        $output .= paginate_comments_links(['echo' => false]); // echo false means that it would return the code instead of echoing it
        }
    }
    return $output;
}
3
  • Thanks for answering but it doesn`t work
    – Navid M
    Feb 14 '20 at 12:36
  • Could you provide more information? Feb 14 '20 at 13:18
  • I think paginate_comments_links() works fine in comments section in blog. not in this function i used
    – Navid M
    Feb 14 '20 at 18:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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