我有一个用户未登录的网站,他们可以发帖,我使用的是名为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
这是因为这些不是实际用户,而是代表管理员发布。
那么如何根据作者姓名获取每个帖子的链接,因为它们显示在管理面板上而非注册用户?
答案 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
来计算。
答案 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>