Про плагин ACF многие уже слышали, а вот про плагин Pods наверное не так много знают, сравним функционал и подумаем в каких случаях они нам пригодятся.
Плагин ACF
С помощью этого плагина мы можем добавить свои поля для поста или страницы и выводить их по какому-либо условию, например только для какой-то категории постов или же для какой-то конкретной страницы, это удобно когда у вас скажем лендинг, вы сверстали шаблон и хотите дать администратору возможность менять только тексты и картинки не влияя на верстку, для этого вы в редакторе страницы вместо Гутенберга выводите только поля ACF для заполнения. Удобно и просто выводить их в самом шаблоне. Делается это примерно так:
$picture = get_field( "picture" );
$testimonial_text = get_field( "text" );
$date = get_the_date('F j, Y');
Code language: PHP (php)
Следует помнить что бесплатная версия имеет ограничения, например повторяющиеся поля можно использовать только в платной версии, с их помощью можно делать потрясающие вещи такие как различные слайдеры и галереи без использования дополнительных плагинов.
Плагин Pods
С помощью этого плагина вы можете также, как и в ACF добавлять различные поля к постам, страницам и категориям, но в отличие от ACF в Pods нету возможности задать условия вывода полей, однако не спешите с выводами. Pods имеет немного другую цель – с его помощью можно легко создавать новые типы постов и знатно кастомизировать почти все в WP:
- Pods имеет целую экосистему расширений и дополнения, больше о возможностях можно узнать на офф. сайте
- Можно изменить колонки вывода постов в категориях, добавить свои поля для фильтрации.
- Есть возможность подключать свой контент к чему угодно в WordPress. Вы даже можете ссылаться на любую таблицу базы данных! Ниже покажу на простом примере как это работает.
- Кроме того в Pods хорошо организовано кеширование данных и имеются собственные инструменты вывода постов, что позволяет делать эффективные запросы и вытаскивать из БД то что нужно.
- Pods работают с мультиязычными плагинами WPML и Polylang
- WPgraphQL интеграция что позволяет работать с WP как с headless CMS например используя GatsbyJS
Пример использования из моего сайта
Задача сделать слайдер отзывов для кастомных постов (препараты) и выводить его как шорткод в препаратах, выводить только отзывы соответствующие своим препаратам. Отзывы должны легко вноситься админом.
Сделаем с помощью Pods новый тип поста Отзывы и создадим там поле для изображения и текста, а также поле relations в котором укажем нужный нам тип данных – Препараты.
Поле relations будет отвечать за то какому препарату относится данный отзыв.
Итак создаем шорткод в function.php таким образом:
**
* Shortcode Slideshow of testimonials
*
**/
function testimonials_slider_function() {
// получаем объект пост чтобы знать ID и заголовок текущего поста
global $post;
// определяем наш тип поста
$products_type = 'testimonial';
// аргументы запроса
$params = array(
'cache_mode' => 'cache',
'expires' => 0,
'where'=>"preparat.id = '$post->ID'",
);
// запрос к БД
$mypod = pods( $products_type, $params );
// сюда записываем отзывы
$html = '';
// проверяем если отзывы есть
if ( 0 < $mypod->total() ) {
while ( $mypod->fetch() ) {
$html .= '
<div class="is-layout-flex wp-container-24 wp-block-columns reviews">
<div class="is-layout-flow wp-block-column" style="flex-basis:20%">
<figure class="wp-block-image size-full"><img src="' . $mypod->display('logo') . '" alt="' . $mypod->field('title') . '"></figure>
</div>
<div class="is-layout-flow wp-block-column" style="flex-basis:80%">
<p class="has-text-align-left">“' . $mypod->field('text') . '”</p>
<p class="has-text-align-right"><strong>' . $mypod->field('title') . '</strong></p>
</div>
</div>';
}
// Если есть отзывы соответствующие препарату
return '<section class="product_reviews is-layout-flow wp-block-group alignfull section section--hero section--padding_top_medium has-white-background-color has-background">
<div class="wp-block-group__inner-container">
<div class="is-layout-flow wp-block-group container container--hero"><div class="wp-block-group__inner-container">
<div class="is-layout-flow wp-block-group hero__wrapper--regular"><div class="wp-block-group__inner-container">
<div class="is-layout-flow wp-block-group hero__content onview left center on"><div class="wp-block-group__inner-container">
<h2>Отзывы о препарате '.$post->post_title.'®</h2>
<div class="is-layout-constrained wp-block-group">
<div class="review_slides wp-block-group__inner-container">
'.$html.'
</div></div>
</div></div>
</div></div>
</div></div>
</div>
</section>';
} else {
// Если нету отзывов соответствующих препарату
return;
}
}
add_shortcode('testimonials_slider', 'testimonials_slider_function');
Code language: PHP (php)
Чтобы слайдер работал конечно нужно еще подключить сам скрипт и стили Slick slider и инициализировать его по классу .review_slides
Затем в нужном месте вставляем сам шорткод [testimonials_slider] и радуемся.
Я считаю, что плагин Pods недооценен и у него большой потенциал, лично я им пользуюсь довольно часто в своих проектах, если у вас возникли вопросы или трудности пишите в комментах.
Благодарю за информацию!