Как отобразить только одного автора, если у него несколько постов? - PullRequest
3 голосов
/ 07 февраля 2020

Я создал свой собственный тип поста (статья). Теперь все авторы статей должны быть показаны на обзорной странице. Если вы нажмете на имя, вы попадете в соответствующий профиль автора.

Однако, если автор написал, например, три статьи, он будет отображаться три раза на странице обзора. Кто-нибудь знает, как я могу решить эту проблему? Большое спасибо.

<?php get_header();

$args = (array(
    'post_type' => 'article',
    'orderby'   => 'name',
    'order'     => 'ASC',
));

$myquery = new WP_Query($args);
?>

<?php
// Start the loop.
if ($myquery->have_posts()) :
    while ($myquery->have_posts()) :
        $myquery->the_post();
        $img = get_the_author_meta('image-author');
        echo wp_get_attachment_image($img, 'image-author'); ?>
        <?php echo the_author_posts_link($args); ?>
    <?php
    endwhile;
endif;
?>

<?php get_footer(); ?>

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете попробовать код ниже:

if ($myquery->have_posts()) :
    $authors_ids = [];
    while ($myquery->have_posts()) :
        $myquery->the_post();
        $img = get_the_author_meta('image-author');
        $author_id = get_the_author_meta('ID');
        if (in_array($author_id, $authors_ids)) {
            continue;
        }
        $authors_ids[] = $author_id;
        echo wp_get_attachment_image($img, 'image-author');
        ?>
        <?php echo the_author_posts_link($args); ?>
    <?php
    endwhile;
endif;
0 голосов
/ 07 февраля 2020

Ниже я привел пример того, что вы можете сделать.

Я не могу дать вам точное исправление, потому что я не знаю, что содержит ваш класс WP_Query, но мой пример ниже должен дать вам понимание того, что вам нужно сделать, чтобы достичь того, что вы хотите.

// Set empty array that we will populate with authors.
$exists = [];

// Example list of authors.
$authors = ['Bob', 'Kirsty', 'Ralph', 'Penny', 'Kirsty', 'Bob', 'Alfie'];

// Loop through each author.
foreach($authors as $k => $author) {

    // We check to see if this author has already been mentioned, if it has, skip it.
    if(in_array($author, $exists)) continue;

    // Author has not previously been mentioned, so we echo this statement.
    echo 'The author for this iteration is ' . $author . '.<br />';

    // As this author hasn't been mentioned before, put them in the '$exists' array.
    $exists[] = $author;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...