Разное

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(); ?>
1

ID записи

<?php the_ID(); ?>
$id = get_the_ID();
echo $id;
2

URL текущий страницы

<?php the_permalink(); ?>
$url = get_the_permalink();
echo $url;
3

Название / H1

<h1><?php the_title(); ?></h1>
$h1 = get_the_title();
echo $h1;
4

Текст

<?php the_content(); ?>
$content = get_the_content();
echo $content;
5

Изображение

Тег IMG

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

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

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

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

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

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

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

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

Произвольные поля

Подробнее о добавлении полей.

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

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

Изображения

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

Файлы

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

Вложенные группы полей

<?php while (the_repeater_field('название_группы')): ?>
    <?php the_sub_field('название_поля'); ?>
<?php endwhile; ?>
7

Рубрики / категории

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

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

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

Результат:

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

Результат:

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
}
?>
8

Метки / теги

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

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

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

Вывод записей из той же категории

Следующий пример с помощью функции 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();
}
?>
19 октября 2018
В случаи смены хостинга 1С-Битрикс позволяет легко сформировать резервную копию проекта и восстановить его.
Примеры защиты от копирования текста с сайта, добавление копирайта при копировании и отключение выделения текста в...
Инструкция как определить логин и пароль к базе данных при наличии доступа к панели управления Joomla (версия 1).