#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));