Изменение функции WordPress

#php #wordpress #function

#php #wordpress #функция

Вопрос:

Я использую функцию WordPress для ввода слова «и» перед последним термином при вызове списка терминов, например:

 function TermList($taxonomy = 'markup') {
    global $post;
    $term_list = '';
    $terms = get_the_terms($post->ID, $taxonomy);
    $n = 1;
    if ($terms) {
        foreach($terms as $term) {
            if ($n < count($terms)) {
                $term_list .= $term->name . ', ';
            } else {
                $term_list = rtrim($term_list, ', ') .  ' and ' . $term->name;
            }
              $n;
        }
    }

    $term_list = rtrim($term_list, ', ');

    return $term_list;
}
  

Я хочу изменить эту функцию, чтобы она отображала только 5 терминов и выбирала эти 5 терминов случайным образом из всех доступных терминов. Я не знаю, с чего начать. Кто может указать мне правильное направление?

Ответ №1:

Использование array_rand

Вы можете использовать array_rand php для выбора случайного элемента из массива, вот официальная документация от php.net

и ваш код будет выглядеть примерно так:

 for($i=0 ; $i<5 ; $i  ){
    $term_list .=  $terms [array_rand($terms )] . ', ';
}
$term_list = rtrim($term_list, ', ');

// replace the last comma with 'and'
$portion = strrchr($term_list , ',');
$term_list = str_replace($portion, (" and" . substr($portion, 1, -1)), $term_list );
  

Использование shuffle и array_slice

Другим решением для извлечения случайных элементов из массива может быть использование shuffle случайного перемешивания элементов массива, а затем использование array_slice для извлечения определенных элементов.

Вот пример кода:

 shuffle($terms );
print_r(array_slice($terms , 0, 3));