WordPress: вывод в шаблон записи

В данной статье представлены примеры вывода информации на странице записи WordPress.

В качестве шаблона для вывода записи используется файл:
/wp-content/themes/название_темы/single.php, если его нет то index.php

Далее представлен базовый шаблон. Данные поста выводятся в цикле have_posts(), поэтому не нужно указывать $id в функциях вывода контента.

<?php get_header(); ?>

<?php
while (have_posts()) { 
	the_post();
	?>

	Вывод контента...
	<h1><?php the_title(); ?></h1>
	
	<?php
}
?>

<?php get_footer(); ?>
HTML
<?php the_ID(); ?>
HTML
$id = get_the_ID();
echo $id;
PHP
<?php the_permalink(); ?>
HTML
$url = get_the_permalink();
echo $url;
PHP
<h1><?php the_title(); ?></h1>
HTML
$h1 = get_the_title();
echo $h1;
PHP
<?php the_content(); ?>
HTML
$content = get_the_content();
echo $content;
PHP

Тег <img>.

<?php the_post_thumbnail('full'); ?>
HTML
$img = get_the_post_thumbnail(null, 'full');
echo $img;
PHP

Размер изображения можно задать следующие:

thumbnail маленькая
medium средняя
large большая
full оригинал
array(100, 100) произвольный размер

URL изображения.

<?php the_post_thumbnail_url('full'); ?>
HTML
$src = get_the_post_thumbnail_url(null, 'full');
echo $src;
PHP

Вывод превьюшки с ссылкой на оригинал.

<a href="<?php the_post_thumbnail_url('full'); ?>">
	<?php echo the_post_thumbnail('thumbnail'); ?>
</a>
HTML

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

Результат

Array
(
    [0] => http://example.com/wp-content/uploads/image.png
    [1] => 150
    [2] => 111
    [3] => 1
)

Плагин ACF, подробнее...

Текстовые и численные поля.

<?php the_field('название_поля'); ?>
HTML

Изображения.

<?php $img = get_field('название_поля'); ?>
<img src="<?php echo $img['url']; ?>" alt="<?php echo $img['name']; ?>">
HTML

Файлы.

<?php $file = get_field('название_поля'); ?>
<a href="<?php echo $file['url']; ?>"><?php echo $file['name']; ?></a>
HTML

Повторитель полей.

Для текстовых значений

<?php while (the_repeater_field('название_родительского_поля')): ?>
	<?php the_sub_field('название_поля'); ?>
<?php endwhile; ?>
HTML

Для изображений и файлов

<?php while (the_repeater_field('название_родительского_поля')): ?>
	<?php $field = get_sub_field('название_поля'); ?>
	<img src="<?php echo $field['url']; ?>">
<?php endwhile; ?>
HTML

Список ссылок.

the_category($id) и get_the_category_list($id) – выведут список ссылок рубрик.

<?php the_category(); ?>
HTML
$category = get_the_category_list();
echo $category;
PHP

Результат

<ul class="post-categories">
	<li><a href="http://example.com/category/razdel-1/" rel="category tag">Раздел 1</a></li>
	<li><a href="http://example.com/category/razdel-2/" rel="category tag">Раздел 2</a></li>
	<li><a href="http://example.com/category/razdel-3/" rel="category tag">Раздел 3</a></li>
</ul>

get_the_category($id) – вернет массив категорий.

$category = get_the_category();
print_r($category);
PHP

Результат

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
        )
    ...
)

На основе этой функции можно вывести список категорий с изображениями и текстом. Картинки к рубрикам добавляются с помощью плагина произвольных полей.

<?php
$category = get_the_category();
foreach ($category as $row) {
	?>
	<div class="category-item">
		Картинка:
		<img src="<?php echo get_field('имя_поля', $row->taxonomy . '_' . $row->cat_ID); ?>">
 
		Ссылка и название:
		<a href="<?php echo get_category_link($row->cat_ID); ?>">
			<?php echo $row->name; ?>
		</a>

		Текст:
		<?php echo $row->category_description; ?>
	</div>
	<?php
}
?>
HTML

Функции the_tags() и get_the_tag_list() выведут ссылки с тегами к которым привязана запись.

<?php the_tags('<p>Метки: ', ', ', '</p>'); ?>
HTML
echo get_the_tag_list('<p>Метки: ',', ','</p>');
PHP

get_the_tags($id) – возвращает массив тегов.

$tags = get_the_tags();
print_r($tags);
PHP
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 последних записей из категории текущей записи с картинками.

<?php
$category = get_the_category();
$query = new WP_Query(
	array(
		'post_type' => '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();
		?>
		
		<div class="post-item">
			Ссылка и название записи
			<a href="<?php the_permalink(); ?>">
				<?php the_title(); ?>
			</a>

			Картинка
			<?php the_post_thumbnail(array(200 ,200)); ?>
				
			Превью
			<?php echo get_field('имя_поля'); ?>		
		</div>

		<?php 
	}
	wp_reset_postdata();
}
?>
HTML
19.10.2018, обновлено 15.10.2019
17729
Предыдущая запись Произвольные поля в WordPress
Следующая запись WordPress: вывод в рубрике

Комментарии

, чтобы добавить комментарий.

Другие публикации

Шаблонизатор Smarty
Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
14680
+5
Описание мета-тегов
В статье представлены все самые встречающеюся мета-теги с примерами и пояснениями их использования.
11785
+3
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
15871
+8
Мануал по созданию и форматированию excel файлов в PHPExcel
К сожалению разработчики прекратили поддержку и разработку проекта, но PHPExcel все равно остается популярной...
68390
+22
Публикация записей на стену сообщества VK
Для начала вы должны быть авторизированы в VK и являться администратором группы или страницы. Далее нужно создать...
19520
+3
Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
129339
+19