0

我有一个用户未登录的网站,他们可以发布,我正在使用一个名为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

发生这种情况是因为这些不是实际用户,他们代表管理员发布。

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

4

2 回答 2

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>   
    

于 2013-09-15T12:03:07.677 回答
0

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

get_the_author返回正确值的原因是因为该插件从元字段挂钩the_author并返回真实值。

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

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

有关 WP_Query 的详细信息在这里

不要忘记wp_reset_postdata那里的描述。

此外,如此所述,您可以使用$my_query->found_posts来获取计数。

这可以满足您的需要。

于 2013-09-13T21:36:31.757 回答