列出当前用户评论的所有帖子

时间:2014-09-08 作者:Bernie

我需要一个页面来显示所有帖子(在Foods custom post type中)有登录用户的评论。

列表只需要显示标题以及标题的链接。

这可能吗?

目前为止我所做的尝试:

<?php if (is_user_logged_in() ) : ?>

<?php
        if ( is_user_logged_in()) {

        global $current_user;
        get_currentuserinfo();

        $args=array(
            \'post_type\' => \'foods\',
            \'posts_per_page\' => 5,
        );
        $my_query = null;
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {
        echo \'Your Comments\';
        while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
        <?php
        endwhile;
        }
        wp_reset_query();  // Restore global post data stomped by the_post().
        }
    ?>
<?php endif; ?> 
但我当然没用过$current_user->ID 然而我还不知道如何在这里使用它。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

如果要避免任何过滤器和手动SQL查询,可以尝试(未测试):

$args = array(
    \'post_type\'      => \'foods\',
    \'posts_per_page\' => 5,
    \'post__in\' => array_unique( 
         wp_list_pluck( 
            get_comments( array(
                \'user_id\' => get_current_user_id() 
                )
            ),       
            \'comment_post_ID\' 
         )
    ),
);
$my_query = new WP_Query( $args );

SO网友:amarinediary

只是想分享与@birgire answer相关的其他行为。

根据当前答案,如果用户没有给出任何评论,post__in 获取值0 这是盲目地退回所有帖子。

为了避免这种情况,我们应该检查post__in 数组是否为空。。。

<?php

$post__in = wp_list_pluck( get_comments( array( \'user_id\' => get_current_user_id() ) ),\'comment_post_ID\' );

if ( ! empty( $post__in ) ) {

    $args = array(
        \'post_type\' => \'question\',
        \'posts_per_page\' => -1,
        \'post__in\' => array_unique( 
            wp_list_pluck(
                get_comments( array(
                        \'user_id\' => get_current_user_id() 
                    )
                ),       
                \'comment_post_ID\' 
            )
        ),
    );
    $query = new WP_Query( $args );
    
    if ( $query->have_posts() ) {
    
        echo \'<ul>\';
        
        while ( $query->have_posts() ) {
            
            $query->the_post();
            
            the_title( \'<li>\', \'</li>\' );
            
        };
    
        echo \'</ul>\';
            
    };

    wp_reset_postdata();
    
};
参见Why is WordPress showing query results from an empty post__in array? 有关详细信息,请参见

结束

相关推荐

The Loop in Static Page

我对环路有一些问题。我以“Twenty14”主题为例。我正在使用基本循环创建2个php文件。一个是家。其中一个是名为示例页的模板页。php。两者都包含此代码;if( have_posts() ) : while( have_posts() ) : the_post(); the_content; endwhile; endif; 没什么特别的,唯一的区别是我在示例页面上有模板声明。php/** * Template Nam