- get_posts() — позволяет получить массив из объектов постов, соответствующих заданным параметрам
- Соответствия параметров get_posts() и WP_Query
- Примеры использования get_posts()
- Миша
- Комментарии — 6
- WordPress: вывод в шаблон записи
- ID записи
- URL текущий страницы
- Название / H1
- Текст
- Изображение
- Тег .
- URL изображения.
- ID и данные о картинке.
- Результат
- Произвольные поля
- Текстовые и численные поля.
- Изображения.
- Файлы.
- Повторитель полей.
- Для текстовых значений
- Для изображений и файлов
- Рубрики / категории
- Список ссылок.
- Результат
- Результат
- Метки / теги
- Вывод записей из той же категории
get_posts() — позволяет получить массив из объектов постов, соответствующих заданным параметрам
Функция возвращает массив, содержащий объекты постов (записей, страниц, вложений, произвольных типов постов или всё сразу), соответствующие заданным параметрам . Прежде всего хочу сказать — если вам нужно вывести посты, то рассмотрите использование WP_Query для этих целей.
Имеет следующие значения параметров по умолчанию:
$params = array( 'post_type' => 'post', // тип постов - записи 'numberposts' => 5, // получить 5 постов, можно также использовать posts_per_page 'orderby' => 'date', // сортировать по дате 'order' => 'DESC', // по убыванию (сначала - свежие посты) 'suppress_filters' => true // 'posts_*' и 'comment_feed_*' фильтры игнорируются );
Соответствия параметров get_posts() и WP_Query
Любой из параметров WP_Query прекрасно подойдет и для get_posts() . Кроме того, функция имеет несколько эквивалентных параметров:
Параметр get_posts() | Его эквивалент в WP_Query |
---|---|
numberposts | posts_per_page |
category | cat |
include | post__in Также устанавливает значение posts_per_page равным количеству перечисленных постов. |
exclude | post__not_in |
То есть в принципе вы можете не использовать параметры из первой колонки таблицы вообще, но если вы увидите их где-то в коде, то уже точно будете знать, что они означают.
Примеры использования get_posts()
Для начала самый простой пример — выведем ссылки на 5 последних опубликованных постов на блоге. Для получения URL постов нам также потребуется функция get_permalink().
$recent_posts_array = get_posts(); // получаем массив постов foreach( $recent_posts_array as $recent_post_single ) : // для каждого поста из массива echo ' . get_permalink( $recent_post_single ) . '">' . $recent_post_single->post_title . ''; // выводим ссылку endforeach; // конец цикла
Аналогичный пример, но с использованием функция the_permalink() (для вывода урл) и the_title() (для вывода заголовков).
$params = array( 'posts_per_page' => 5 // этот параметр не обязателен, так как get_posts() по умолчанию и так выводит 5 постов ); $recent_posts_array = get_posts( $params ); foreach( $recent_posts_array as $recent_post_single ) : setup_postdata( $recent_post_single ); // устанавливает $post (глобальная переменная - объект поста) ?> the_permalink() /* URL записи */ ?>"> the_title() /* выводим заголовок */ ?> endforeach; wp_reset_postdata(); // сбрасывает $post
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Комментарии — 6
add_filter('post_gallery', 'my_post_gallery', 10, 3); function my_post_gallery($output, $attr, $instance){global$post; if(isset($attr['orderby'])){$attr['orderby'] = sanitize_sql_orderby($attr['orderby']); if(!$attr['orderby'])unset($attr['orderby']); }extract(shortcode_atts(array('order' =>'ASC', 'orderby' =>'menu_order ID', 'id' =>$post ? $post->ID : 0, 'itemtag' =>'dl', 'icontag' =>'dt', 'captiontag' =>'dd', 'columns' =>3, 'size' =>'thumbnail', 'include' =>'', 'exclude' =>''), $attr)); $id = intval($id); if('RAND' == $order)$orderby = 'none'; if(!empty($include)){$include = preg_replace('/[^0-9,]+/', '', $include); $_attachments = get_posts(array('include' =>$include, 'post_status' =>'inherit', 'post_type' =>'attachment', 'post_mime_type' =>'image', 'order' =>$order, 'orderby' =>$orderby, 'field' =>'id')); $title = trim(strip_tags($post->title)); $attachments = array(); foreach($_attachmentsas$key =>$val){$attachments[$val->ID] = $_attachments[$key]; }}if(empty($attachments))return''; $output = "\"gallery-$instance\" style="color: #999;">\"gallery gallery-$size\" >\n"; $container_id = get_post_thumbnail_id(); $container = wp_get_attachment_image_src($container_id, 'thumbnail'); $container_full = wp_get_attachment_image_src($container_id, 'full'); $thumbnail_image = get_posts(array('p' =>$container_id, 'post_type' =>'attachment', 'field' =>'id')); $caption = trim(strip_tags($thumbnail_image[0]->caption)); $gallery_price = ''; $gallery_price = get_post_meta($post->ID, 'gallery', true); print$post->ID; $prev_img = ''; $dop_class = ' col-md-4 col-sm-6 col-xs-12' ; if(has_shortcode($gallery_price, 'gallery') and is_front_page()){$output .= "\n"; return$output; wp_reset_postdata(); }\"gallery_container\">\n"; $output .= "\"my-foto-container-a\" href=\"\" title=\"$title$caption\">"; $output .= "\n"; }else{$prev_img = "\"gallery-item$dop_class\">\n"; $prev_img .= "\"\" title=\"\" style="color: #999;">\"my-foto-a\" >"; $prev_img .= "\"\" width=\"\" height=\"\" alt=\"$title$caption\" style="color: #999;">\"my-foto-container for-all-image trumb-category\"/>\n"; $output .= "\n"; $output .= "
\"\" width=\"150\" height=\"100\" alt=\"\" style="color: #999;">\"my-foto\"/>"; $prev_img .= "\n"; $prev_img .= "\n"; }$output .= "
\"
trumb_gallery row\">\n"; $output .= $prev_img; foreach($attachmentsas$id =>$attachment){$img = wp_get_attachment_image_src($id, array(150,150)); $url_prevu = wp_get_attachment_image_src($id, $size); $url_big = wp_get_attachment_image_src($id, 'full'); $title = trim(strip_tags($attachment->post_excerpt)); $output .= "\"gallery-item$dop_class\">\n"; $output .= "\"\" title=\"\" style="color: #999;">\"my-foto-a\">\"\" width=\"\" height=\"\" alt=\"\" data-prevu=\"\" data-large=\"\" style="color: #999;">\"my-foto\"/>\n"; $output .= "\n"; }$output .= " \n"; $output .= "
has_shortcode($gallery_price, 'gallery')
это показывает id не того поста, в котором галерея, а последней созданной записи. Тыщу раз перепроверила wp_reset_postdata(); Он везде стоит где global $post; что-то я запуталась (((
WordPress: вывод в шаблон записи
В данной статье представлены примеры вывода информации на странице записи WordPress.
В качестве шаблона для вывода записи используется файл:
/wp-content/themes/название_темы/single.php , если его нет то index.php
Далее представлен базовый шаблон. Данные поста выводятся в цикле have_posts() , поэтому не нужно указывать $id в функциях вывода контента.
ID записи
URL текущий страницы
$url = get_the_permalink(); echo $url;
Название / H1
$h1 = get_the_title(); echo $h1;
Текст
$content = get_the_content(); echo $content;
Изображение
Тег
.
$img = get_the_post_thumbnail(null, 'full'); echo $img;
Размер изображения можно задать следующие:
thumbnail | маленькая |
medium | средняя |
large | большая |
full | оригинал |
array(100, 100) | произвольный размер |
URL изображения.
$src = get_the_post_thumbnail_url(null, 'full'); echo $src;
Вывод превьюшки с ссылкой на оригинал.
ID и данные о картинке.
Функция wp_get_attachment_image_src($id, $size) возвращает массив данных картинки по ID.
$thumb_id = get_post_thumbnail_id(); $src = wp_get_attachment_image_src($thumb_id, 'full'); print_r($src);
Результат
Array ( [0] => http://example.com/wp-content/uploads/image.png [1] => 150 [2] => 111 [3] => 1 )
Произвольные поля
Текстовые и численные поля.
Изображения.
Файлы.
Повторитель полей.
Для текстовых значений
Для изображений и файлов
Рубрики / категории
Список ссылок.
the_category($id) и get_the_category_list($id) – выведут список ссылок рубрик.
$category = get_the_category_list(); echo $category;
Результат
get_the_category($id) – вернет массив категорий.
$category = get_the_category(); print_r($category);
Результат
Array ( [0] => WP_Term Object ( [term_id] => 4 [name] => Раздел 1 [slug] => razdel-1 [term_group] => 0 [term_taxonomy_id] => 4 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw [cat_ID] => 4 [category_count] => 1 [category_description] => [cat_name] => Раздел 1 [category_nicename] => razdel-1 [category_parent] => 0 ) . )
На основе этой функции можно вывести список категорий с изображениями и текстом. Картинки к рубрикам добавляются с помощью плагина произвольных полей.
Ссылка и название: cat_ID); ?>"> name; ?> Текст: category_description; ?> ?>
Метки / теги
Функции the_tags() и get_the_tag_list() выведут ссылки с тегами к которым привязана запись.
echo get_the_tag_list('Метки: ',', ','
');
get_the_tags($id) – возвращает массив тегов.
$tags = get_the_tags(); print_r($tags);
Array ( [0] => WP_Term Object ( [term_id] => 24 [name] => Тег 1 [slug] => teg-1 [term_group] => 0 [term_taxonomy_id] => 24 [taxonomy] => post_tag [description] => [parent] => 0 [count] => 1 [filter] => raw ) )
Вывод записей из той же категории
Следующий пример с помощью функции WP_Query() выведет 6 последних записей из категории текущей записи с картинками.
'post', 'post_status' => 'publish', 'posts_per_page' => 6, 'cat' => $category[0]->cat_ID, 'post__not_in' => array(get_the_ID()), 'orderby' => 'date', 'order' => 'DESC' ) ); if ($query->have_posts()) < while ($query->have_posts()) < $query->the_post(); ?> "> Картинка Превью wp_reset_postdata(); > ?>