我想在页面上列出作者,但排除管理员(我自己)。我使用的是松鼠的儿童主题,这是我目前的代码:
<?php
$authors = $wpdb->get_results('SELECT DISTINCT post_author FROM '.$wpdb->posts);
if($authors):
foreach($authors as $author):
?>
<div class='author' id='author-<?php the_author_meta('user_login', $author->post_author); ?>'>
<h3><a href="<?php bloginfo('url'); ?>/author/<?php the_author_meta('user_login', $author->post_author); ?>"><?php the_author_meta('display_name', $author->post_author); ?></a></h3>
<?php if(get_the_author_meta('description', $author->post_author)): ?>
<div class='description'>
<?php echo get_avatar(get_the_author_meta('user_email', $author->post_author), 80); ?>
<p><?php the_author_meta('description', $author->post_author); ?></p>
</div>
<?php endif; ?>
<?php
$recentPost = new WP_Query('author='.$author->post_author.'&showposts=1');
while($recentPost->have_posts()): $recentPost->the_post();
?>
<h4>Recent Article: <a href='<?php the_title();?>'><?php the_title(); ?></a></h4>
<?php endwhile; ?>
</div>
<?php endforeach; endif; ?>
我尝试使用this讨论中的解决方案,但我不认为我做得对,因为当我添加这行代码时:
if(get_the_author_meta('display_name', $author->post_author) != 'admin'):
下:
foreach ($authors as $author):
它只会破坏整个网站(屏幕为白色)。这对我来说都是新手,所以有人可以帮我弄清楚我做错了吗?
非常感谢!
答案 0 :(得分:1)
您遇到的白屏是一个致命的PHP错误。出于安全原因,您没有看到错误是什么。
但是,在开发过程中,您需要关闭此功能。只需修改wp-config.php
并将WP_DEBUG
设置为true
。
至于你的问题,你可能需要这样的东西:
if($author->post_author == 1) continue;
...作为foreach
内的第一行。 id 1应该是您的用户ID,因为在WP中创建的第一个用户有1,关键字continue
跳转到foreach的末尾,从而跳过用户。
如果您更喜欢通过用户名执行此操作,请使用以下命令:
if(get_the_author_meta('user_login', $author->post_author) == 'admin') continue;