У меня есть два кастомных поля ACF в записях WordPress, мне нужно выводить на главной посты из записей используя эти кастомные записи, при щелчке на них переход к определенной записи
имя первой в ACF text-title это для вставки в код второй kratkoe_opisanie_proekta_dlya_glavnoj
Для вывода постов на главной странице с использованием кастомных полей ACF, таких как text-title
и kratkoe_opisanie_proekta_dlya_glavnoj
, можно сделать следующее:
- Запрос постов: Используем стандартный WP_Query для вывода постов.
- Получение значений кастомных полей: Используем функцию
get_field()
для получения данных ACF. - Вывод информации на главной: Выводим заголовки и краткое описание в HTML, а также создаём ссылку на пост.
Вот пример кода, который можно добавить в файл front-page.php
(или в шаблон главной страницы):
<?php
// WP_Query для получения постов
$args = array(
'post_type' => 'post', // Здесь укажите тип записи, например, 'post' или ваш кастомный тип
'posts_per_page' => 10, // Количество постов, которое нужно вывести
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
// Получаем данные из ACF
$custom_title = get_field('text-title'); // Первое кастомное поле
$short_description = get_field('kratkoe_opisanie_proekta_dlya_glavnoj'); // Второе кастомное поле
?>
<div class="post-item">
<h2>
<a href="<?php the_permalink(); ?>">
<?php echo esc_html( $custom_title ); // Выводим заголовок ?>
</a>
</h2>
<p><?php echo esc_html( $short_description ); // Выводим краткое описание ?></p>
</div>
<?php
endwhile;
wp_reset_postdata();
else :
echo '<p>Записей не найдено</p>';
endif;
?>
Что делает этот код:
- Запрашивает посты с типом
post
. - Для каждого поста:
- Выводит заголовок (
text-title
) с ссылкой на сам пост. - Выводит краткое описание проекта для главной страницы (
kratkoe_opisanie_proekta_dlya_glavnoj
).
- Выводит заголовок (
- Если посты не найдены, выводится сообщение «Записей не найдено».
Если у вас кастомный тип записи, замените 'post_type' => 'post'
на название вашего типа.
Этот код можно адаптировать под вашу тему и дизайн.
$custom_title это переменная?
Да, переменные в PHP обозначаются символом $
, и в вашем случае $custom_title
и $short_description
— это переменные, которые получают данные из кастомных полей ACF с помощью функции get_field()
.
В данном примере:
$custom_title
хранит значение кастомного поляtext-title
.$short_description
хранит значение кастомного поляkratkoe_opisanie_proekta_dlya_glavnoj
.
Эти переменные затем используются для вывода данных на страницу.
А что такое $the_query = new WP_Query( $args );
в ВордПресс?
$the_query = new WP_Query( $args );
— это код, создающий объект класса WP_Query
в WordPress. Этот объект используется для выполнения кастомных запросов к базе данных и получения постов на основе заданных условий.
Расшифровка:
WP_Query
— это встроенный класс WordPress, который позволяет выполнять запросы к базе данных для получения постов, страниц, или других типов записей. Он предоставляет более гибкие возможности, чем стандартный цикл WordPress.$args
— это массив аргументов, который передаётся вWP_Query
. В массиве можно указать различные параметры, такие как тип записей (post_type
), количество записей для вывода (posts_per_page
), категорию, метки, таксономии и другие условия для выборки постов.new WP_Query( $args )
— создаёт новый экземпляр классаWP_Query
, который инициализирует запрос с переданными параметрами.
$args = array(
'post_type' => 'post', // Тип записи, например, посты блога
'posts_per_page' => 10, // Количество постов для отображения
);
$the_query = new WP_Query( $args ); // Создаём новый запрос на основе аргументов
В результате выполнения этого кода, в переменной $the_query
будет находиться объект с результатами запроса. Этот объект можно использовать для перебора постов и их вывода в цикле.
После запроса используется стандартный цикл WordPress (while ... endwhile
) для работы с результатами:
if ( $the_query->have_posts() ) : // Проверяем, есть ли посты
while ( $the_query->have_posts() ) : $the_query->the_post(); // Перебираем посты
// Здесь идет вывод постов
endwhile;
wp_reset_postdata(); // Сбрасываем глобальные переменные постов после выполнения цикла
endif;
Этот код позволяет выполнять более сложные запросы, чем стандартный цикл WordPress, и выводить записи по кастомным условиям.
Массив аргументов $args
передаётся в WP_Query
, чтобы задать условия для выборки постов из базы данных WordPress. Это позволяет вам точно контролировать, какие записи будут загружены, и как они будут отображаться. По сути, массив $args
определяет «правила» для запроса.
Вот почему $args
нужен:
- Определение типа записей: Например, вы можете указать, что хотите получить записи определённого типа, как посты блога (
post
), страницы (page
), или кастомные типы записей, такие как «портфолио» или «продукты». - Фильтрация постов: Вы можете фильтровать посты по категориям, меткам, таксономиям, или другим параметрам. Например, можно запросить посты только из конкретной категории или только те, которые были опубликованы за последний месяц.
- Количество постов: Можно указать, сколько записей нужно получить на странице, например, 5, 10 или все записи.
- Сортировка: Можно задать, в каком порядке будут выводиться посты — по дате, по алфавиту, по ID или по любому другому полю.
Пример аргументов $args
:
**`$args`** — это массив аргументов, который передаётся в `WP_Query`. зачем он туда передается?
Массив аргументов $args
передаётся в WP_Query
, чтобы задать условия для выборки постов из базы данных WordPress. Это позволяет вам точно контролировать, какие записи будут загружены, и как они будут отображаться. По сути, массив $args
определяет «правила» для запроса.
Вот почему $args
нужен:
- Определение типа записей: Например, вы можете указать, что хотите получить записи определённого типа, как посты блога (
post
), страницы (page
), или кастомные типы записей, такие как «портфолио» или «продукты». - Фильтрация постов: Вы можете фильтровать посты по категориям, меткам, таксономиям, или другим параметрам. Например, можно запросить посты только из конкретной категории или только те, которые были опубликованы за последний месяц.
- Количество постов: Можно указать, сколько записей нужно получить на странице, например, 5, 10 или все записи.
- Сортировка: Можно задать, в каком порядке будут выводиться посты — по дате, по алфавиту, по ID или по любому другому полю.
Пример аргументов $args
:
$args = array(
'post_type' => 'post', // Запрашиваем только посты блога
'posts_per_page' => 10, // Максимум 10 постов на странице
'category_name' => 'news', // Только посты из категории "news"
'order' => 'DESC', // Порядок — сначала новые
'orderby' => 'date' // Сортировка по дате публикации
);
Когда массив $args
передаётся в WP_Query
, WordPress использует его для создания SQL-запроса к базе данных, чтобы вернуть именно те записи, которые соответствуют указанным критериям.