如何获得作者姓名的帖子?

时间:2013-09-13 21:20:13

标签: php wordpress

我有一个用户未登录的网站,他们可以发帖,我使用的是名为http://wordpress.org/plugins/user-submitted-posts/的插件。他们的帖子被认为是由管理员发布的,但是,因为在他们提交的表单中他们可以插入他们的名字,wordpress显示在管理面板中他们的名字。

通过这样做,我可以得到一个名单列表:

<ul>
<?php
 $args= array(
  'posts_per_page' => -1
);
  query_posts($args);
?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>     
<li>
    <?php echo get_the_author();  ?>
</li>   
    <?php endwhile; ?> <?php endif; ?>
</ul>

但如果我加上这个:

<?php echo get_the_author_posts(); ?> 

我得到了不同名字的列表,但每个名字都显示了相同数量的帖子,例如:

Name1 22
Name2 22
Name3 22
Name4 22

这是因为这些不是实际用户,而是代表管理员发布。

那么如何根据作者姓名获取每个帖子的链接,因为它们显示在管理面板上而非注册用户?

2 个答案:

答案 0 :(得分:0)

作者姓名在名为user_submit_name的自定义字段(元表)中设置,因此,如果您按'meta_key'=>'user_submit_name''meta_value'=>'John Doe'过滤帖子,那么您只会获得该帖子的帖子作者。

get_the_author返回正确值的原因是因为此插件挂钩到the_author并从元字段返回 real 值。

您可以查询将某个元字段设置为特定值的帖子,如下所示:

$my_query  = new WP_Query(array(
    'meta_key' => 'user_submit_name',
    'meta_value' => 'John Doe',
    'meta_compare' => '=' 
));

有关WP_Query的详细信息是here

不要忘记那里描述的wp_reset_postdata

此外,正如here所述,您可以使用$my_query->found_posts来计算。

This does what you need.

答案 1 :(得分:0)

宾果!

        
     $args= array(
     'posts_per_page' => -1
    );
       query_posts($args);
    if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>       
    <li>
    
         <?php
    $args = array(
      'posts_per_page' => -1,
        'meta_key' => 'user_submit_name',
     'meta_value' => get_the_author(),
     'meta_compare' => '='
    );
    $myquery = new WP_Query($args);
    
    echo '<h3>' . $myquery->found_posts . ' proposte da ' . get_the_author() . '</h3><br>';
    
    while ( $myquery->have_posts() ) { 
        $myquery->the_post(); 
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    ?>
    
     <?php   wp_reset_postdata(); ?>
    
    </li>   
    

相关问题