Не так давно мне был задан вопрос одним из владельцев сайта (он сам пытается обслуживать свой сайт), однако, решить возникший вопрос у него не хватило знаний и он обратился ко мне. Вопрос кратко в следующем: ему требовалось вывести информацию имеющейся страницы в произвольном месте сайта. То есть ему нужно было в одной из категорий товаров магазина вывести некоторое описание…
В общем, данная задача в принципе решается несложно, однако, есть некоторые требования, о которых следует знать, понимать. Первое: нужно максимально точно определиться с конкретной задачей, сформулировать в теории как это должно работать и только потом приступать к решению, потому как функционал для той или иной задачи выполняется разно:
Нужно сказать, что желание админа вполне резонно и дальновидно! например, на сайте, на некоторых страницах, присутствует статичная однотипная информация, это, как правило, на корпоративных сайтах, и которая время от времени редактируется – обстоятельство получения и вывода информации какой-то ранее созданной страницы в произвольном месте, может послужить пользой.
То есть не редактировать блоки, а всего-лишь подредактировать текст на странице, данные которой автоматом отправиться туда, куда требуется.
Это я, разумеется, предположил один из примеров… а их может быть масса в своем разнообразии…
Один из вариантов решения данной задачи является таким:
получаем и выводим информацию страницы в произвольном месте сайта
Этот код нужно записать в файл functions.php шаблона вашей активной темы (или, скажем, в личный плагин):
Вариантов получения и вывода информации достаточно много, предлагаю один из… Используем функцию: get_posts() – есть варианты с setup_postdata() но это иная тема, о которой в следующей инструкции.
function too_my_pages_uslugy() {
$post_id = 2; // указываем ID страницы
$post_object = get_post( $post_id ); // $post_object работаем с объектом
$post_title = $post_object->post_title; // например, получаем заголовок страницы
//$post_content = $post_object->post_content; // получаем содержание страницы: неформатированный вариант
$post_content = apply_filters( 'the_content', $post_object->post_content ); // этот фильтр выведет форматированные данные
//$status_pst = $post_object->post_status; // получаем статус поста
//$links_pst = $post_object->guid; // ссылка по id записи
//$post_image = get_the_post_thumbnail( $post_id, 'large', array( 'class' => 'img-responsive' ) ); // получаем изображение страницы
<h2 class='title' title='<?php echo $post_title; ?>'><?php echo '(статус ' . $status_pst . ') '; echo $post_title; ?></h2>
<div><div><div class="image-container"><?php if ( has_post_thumbnail()) { ?>
<?php the_post_thumbnail( 'medium' , array( 'itemprop' => 'image' )); ?>
<?php } ?><?php echo $post_image; ?></div><?php echo $post_content; // . '<br />' если выводим НЕ форматированный ?>
</div></div>
<?php }
немного теории по коду
Пробежимся по основным моментам (разумеется, это только шаблон, код можно как угодно настраивать под свои требования):
Это: $post_id = 2;
как и указано в комментарии, обозначим id страницы, которой выводим данные. Работаем с объектом. В данном случае это id 2
$post_title = $post_object->post_title;
– получаем заголовок страницы (можно запросить данные, если вам требуется вывести title какого-то SEO плагина и пр.
$post->comment_count;
// в виде 1
Нота:
указывать ID поста в виде целого числа – $post_object = get_post( 5 );
– возможно с выходом версии WordPress 3.5.
А в более старых версиях WP ID поста нужно было передавать непременно в переменной, собственно как и показано для наглядности в сниппете выше
$post_id = 2;
$post_object = get_post( $post_id );
итак:
$post_object = get_post( $post_id );
– получаем данные такой-то ID страницы. Однако, обратите внимание на следующую строку (фильтр):
$post_content = apply_filters( 'the_content', $post_object->post_content );
– это боле логичный вариант, выводит форматированнные данные вместе с картинками и пр…
$links_pst = $post_object->guid;
– возможно получить ссылку типа: https://mihalica.ru/?p=2
$post_image = get_the_post_thumbnail
… – получаем миниатюру записи… или можно как-то иначе, например, по селектору CSS: image-container
и пр. и пр. смотрите в документации (ссылку дам чуть позже).
…и далее собственно выводим информацию…
Напоминаю: в данном примере показана только-лишь произвольная функция too_my_pages_uslugy Ее возможно определить и шорткодом, чтобы использовать возможность вывода информации средствами некоего конструктора страниц, к примеру, в плагине ЭЭлементор, который нынче весьма опрометчиво моден!
Получить данные страницы можно разнообразные, к примеру: $post->post_author;
id автора,
$post->post_date; // 2024-12-09 07:55:07
или $post->post_date_gmt; // 2024-12-09 07:55:07 даты
echo $post->post_modified; // 2024-12-09 07:55:07
echo $post->post_modified_gmt; // 2024-12-09 07:55:07
получаем статус поста $post->post_status;
используется в коде выше.
…и пр. и пр.
Создание и продвижение сайтов; помощь по сайту, настройки, сопровождение и пр. – студия ATs media запросто с WordPress
mihalica.ru !
Здравствуйте! А как шордкод сделать правильно для этого решения? вы не написали))
Привет!
1) определите шорткод (разместите строку над функцией):
2) выводите шорт, если в файле, то:
do_shortcode( '[задайте_имя]' );
если типа в виджете то, скорее всего, так:
[задайте_имя]
…
Можете задать условия для отработки, если вдруг шорткод отключить на время, – например, чтобы в этом случае не выводилась костяшка шорта:
add_shortcode( 'задайте_имя', '__return_false' );
Вот это, Автор, большое спасибо вам. Очень полезная идея и урок…