Тип записи «продукты» — product
Произвольное поле «картинка» — product_image
Задача:
Вывести одну случайную картинку из всех продуктов
Решение:
Код:
function random_image($type = 0){
$args = array(
'post_type' => 'product',
'order' => 'ASC',
'posts_per_page' => -1
);
// получаем все продукты
$posts = get_posts( $args );
// создаем массив ID всех продуктов
foreach( $posts as $pst ){
$input[] = $pst->ID;
}
//выводим случайный ключ массива
$rand_keys = array_rand($input, 1);
//получаем урл картинки по полученному значению произвольного поля
return wp_get_attachment_image_url(get_post_meta($input[$rand_keys], 'product_image', true), full);
}
Код:
function random_field_post($type = 0, $post_type, $cust_field){
$args = array(
'post_type' => $post_type,
'order' => 'ASC',
'posts_per_page' => -1
);
$posts = get_posts( $args );
// создаем массив со всеми продуктами
foreach( $posts as $pst ){
$input[] = $pst->ID;
}
//выводим случайный ключ массива
$rand_keys = array_rand($input, 1);
if( $type = 1 ){
$post = get_post( $input[$rand_keys], ARRAY_A, 'display' );
$post[$cust_field] = wp_get_attachment_image_url(get_post_meta($input[$rand_keys], $cust_field, true), full);
$post['url'] = get_the_permalink ( $input[$rand_keys] );
$post['post_content'] = apply_filters( 'the_content', $post['post_content'] );
return $post;
}else{
//получаем урл картинки по полученному значению произвольного поля
return wp_get_attachment_image_url(get_post_meta($input[$rand_keys], $cust_field, true), full);
}
}
Теперь мы можем передавать три параметра:
1. Тип вывода:
- 0 — вывести заданное нам произвольное поле.
- 1 — вывести весь пост плюс наше поле.
2. Тип записи.
3. Название нашего произвольного поля.
Пример:
Код:
<?php
$random = random_field_post(1, 'product', 'product_image');
echo $random['post_title'] . '<br>';
echo $random['product_image'] . '<br>';
?>
ID(число)
Идентификатор записи.post_author(число)
Идентификатор автора записи.post_date(строка)
Дата записи в формате YYYY-MM-DD HH:MM:SS (с учетом исправления времени).post_date_gmt(строка)
Дата записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).post_content(строка)
Текст записи.post_title(строка)
Заголовок записи.post_excerpt(строка)
Цитата записи.post_status(строка)
Статут записи, может быть: publish|pending|draft|private|static|object|attachment|inherit|future|trash.comment_status(строка)
Возможность комментирования для записи, может быть: open|closed|registered_only.ping_status(строка)
Статус пингов/трэкбэков, может быть: open|closed.post_password(строка)
Пароль записи.post_name(строка)
Имя записи (слаг). Название которое обычно используется в УРЛ-е.to_ping(строка)
УРЛ-ы из статьи, на которые нужно отправить уведомления при обновлении поста.pinged(строка)
УРЛ-ы из статьи, которые уже получили уведомления.post_modified(строка)
Дата изменения записи в формате YYYY-MM-DD HH:MM:SS (с учетом корректировки времени).post_modified_gmt(число/строка)
Дата изменения записи в формате YYYY-MM-DD HH:MM:SS (время по Гринвичу (GMT)).post_parent(число)
ID родительской страницы (отлично от нуля у прикрепленных типов записей).guid(строка)
Ссылка на запись. Важно: использовать этот параметр в качестве постоянной ссылки для поста неправильно, если версия вашего WordPress выше 2.5. Это уникальный идентификатор записи, который позднее стал ссылкой на запись.menu_order(число)
Порядковый номер для построения меню (используется для постоянных страниц).post_type(строка)
Тип записи (post|page|attachment).post_mime_type(строка)
Миме тип записи (jpg|png|zip|pdf и т.д.). Используется для прикрепленных записей.comment_count(число)
Количество комментариев у записи.