列出作者,但在Wordpress子主题中排除管理员

时间:2015-04-05 13:22:05

标签: php wordpress function

我想在页面上列出作者,但排除管理员(我自己)。我使用的是松鼠的儿童主题,这是我目前的代码:

<?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):

它只会破坏整个网站(屏幕为白色)。这对我来说都是新手,所以有人可以帮我弄清楚我做错了吗?

非常感谢!

1 个答案:

答案 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;