Вывод поста в php

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 .= "
\"gallery_container\">\n"; $output .= "\"my-foto-container-a\" href=\"\" title=\"$title$caption\">"; $output .= "\"\" width=\"\" height=\"\" alt=\"$title$caption\" style="color: #999;">\"my-foto-container for-all-image trumb-category\"/>\n"; $output .= "\n"; $output .= "
\n"
; }else{$prev_img = "\"gallery-item$dop_class\">\n"; $prev_img .= "\"\" title=\"\" style="color: #999;">\"my-foto-a\" >"; $prev_img .= "\"\" 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 .= "
\n"
; return$output; wp_reset_postdata(); }
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(); > ?>

Источник

Читайте также:  Java zip file type
Оцените статью