Необходимо отобразить случайный список из 6 авторов - PullRequest
0 голосов
/ 21 января 2019

там - я смог довольно далеко продвинуться к этой функции, которую я адаптировал для https://annexteenclinic.org;, однако, вместо случайного добавления 6 авторов из примерно 20 авторов на сайт, он отображает первые 6 в алфавитном порядке в случайном порядке.

Очевидно, я что-то упустил! Мне любопытно узнать, как я могу настроить приведенный ниже код, чтобы выбрать 6 случайных авторов, а затем отобразить их. Заранее спасибо за ваши мысли. Приветствуются идеи о том, как сделать этот код более аккуратным. Это растягивается.

function stahom() {
    $display_admins = false;
    //$order_by = 'display_name';
    // 'nicename', 'email', 'url', 'registered', 'display_name', or 'post_count'
    $order_by = 'rand';
    $order = 'ASC';
    $role = 'staff-directory'; // 'subscriber', 'contributor', 'editor', 'author' - leave blank for 'all'
    $hide_empty = false; // hides authors with zero posts
    $number = '6';

    if (!empty($display_admins)) {
        $blogusers = get_users('orderby='.$order_by.'&role='.$role);
    } else {
        $admins = get_users('role=administrator');
        $exclude = array();

        foreach ($admins as $ad) {
            $exclude[] = $ad->ID;
        }

        $exclude = implode(',', $exclude);
        $blogusers = get_users('exclude='.$exclude.'&orderby='.$order_by.'&number='.$number.'&order='.$order.'&role='.$role);
    }

    $authors = array();

    foreach ($blogusers as $bloguser) {
        $user = get_userdata($bloguser->ID);

        if (!empty($hide_empty)) {
            $numposts = count_user_posts($user->ID);
            if ($numposts < 1) {
                continue;
            }
        }

        $authors[] = (array) $user;
    }

    shuffle($authors);
    array_rand($authors);
    foreach ($authors as $author) {
        $author_title = get_field('title', 'user_'. $author['ID']);
        $display_name = $author['data']->display_name;
        $author_profile_url = get_author_posts_url($author['ID']);

        $author_regpho = get_field('regpho', 'user_'. $author['ID']);
        $regurl = $author_regpho['url'];

        $author_hovpho = get_field('hovpho', 'user_'. $author['ID']);
        $hovurl = $author_hovpho['url'];

        $size = 'thumbnail';
        $regthumb = $author_regpho['sizes'][$size];
        $hovthumb = $author_hovpho['sizes'][$size];

        echo '<div class="third"><div class="container"><a href="', $author_profile_url, '" class="contributor-link"><img src="', $regthumb,'" alt="', $display_name,'" class="image">';
        echo '<div class="overlay">';
        echo '<img src="', $hovthumb,'" alt="', $display_name,'" class="image"></div>';
        echo '</a></div>';
        echo '<div class="stalin"><a href="', $author_profile_url, '" class="contributor-link">', $display_name, '<br/><span>', $author_title, '</a></span></div></div>';
    }
}
add_action('hook_bottom_stahom', 'stahom');

1 Ответ

0 голосов
/ 23 января 2019

Большое спасибо за предложения, все. Я принял ваш совет и выкладываю код ниже. Что я сделал, так это избавился от ограничения по количеству, а затем добавил срез к первым шести случайно вытянутым, как было предложено. Вот результат, и он работает! Ценю помощь!

function stahom() {
?>
<?php
 $display_admins = false;
 //$order_by = 'display_name';
 // 'nicename', 'email', 'url', 'registered', 'display_name', or 'post_count'
 $order_by = 'rand';
 $order = 'ASC';
 $role = 'staff-directory'; // 'subscriber', 'contributor', 'editor', 'author' - leave blank for 'all'
 $hide_empty = false; // hides authors with zero posts

 if(!empty($display_admins)) {
      $blogusers = get_users('orderby='.$order_by.'&role='.$role);
 } else {
    $admins = get_users('role=administrator');
    $exclude = array();

    foreach($admins as $ad) {
      $exclude[] = $ad->ID;
    }

    $exclude = implode(',', $exclude);
    $blogusers = get_users('exclude='.$exclude.'&orderby='.$order_by.'&number='.$number.'&order='.$order.'&role='.$role);
 }

 $authors = array();

 foreach ($blogusers as $bloguser) {
    $user = get_userdata($bloguser->ID);

    if(!empty($hide_empty)) {
        $numposts = count_user_posts($user->ID);
        if($numposts < 1) continue;
    }

    $authors[] = (array) $user;
 }

 shuffle($authors);$authors = array_slice( $authors, 0, 6 );array_rand($authors);foreach($authors as $author) {
    $author_title = get_field('title', 'user_'. $author['ID']);
    $display_name = $author['data']->display_name;
    $author_profile_url = get_author_posts_url($author['ID']);

    $author_regpho = get_field('regpho', 'user_'. $author['ID']);
    $regurl = $author_regpho['url'];

    $author_hovpho = get_field('hovpho', 'user_'. $author['ID']);
    $hovurl = $author_hovpho['url'];

    $size = 'thumbnail';
    $regthumb = $author_regpho['sizes'][ $size ];
    $hovthumb = $author_hovpho['sizes'][ $size ];

    echo '<div class="third"><div class="container"><a href="', $author_profile_url, '" class="contributor-link"><img src="', $regthumb,'" alt="', $display_name,'" class="image">';
    echo '<div class="overlay">';
    echo '<img src="', $hovthumb,'" alt="', $display_name,'" class="image"></div>';
    echo '</a></div>';
    echo '<div class="stalin"><a href="', $author_profile_url, '" class="contributor-link">', $display_name, '<br/><span>', $author_title, '</a></span></div></div>';
}

?>
<?php
}
add_action('hook_bottom_stahom', 'stahom');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...