-
Vadim TsukanovРазработчик
-
Дата публикации07.03.2020
-
КатегорияWordpress
Большой заказ! Гос программа! Все здорово… но пользоваться коммерческими расширениями нельзя. Используем только OpenSource. И Вот что я могу сказать про Carbon Fields…
Первый 2-3 дня я был просто доволен решением. Удобно, хранится не в бд… т.е. можно накидать полей и просто добавлять их в functions.php. Более того — можно писать данные по умолчанию и т.д. — очень здорово!
Плюсы:
- Поле «повторитель» бесплатно
- Поле ассоциатив бесплатно
Минусы:
Документация! Плагин умеет очень много всего! Но документации единой нет! Что-то находишь в доке от версии 2.2,что-то лежит в доке от версии 1.6, а что-то и в последней. По итогу — не очень удобно.
За неделю активной работы я нашел несколько серьезных проблем:
У вас, наверняка будет ошибка js, если вы будете использовать ассоциативное поле вместе с повторителем (association и repeater). Проблема массовая, однако решение найти тяжело, во всех источниках, которых мог — я отписался, напишу и здесь — обязательно ставьте приоритеты загрузки!
Текст ошибки: Call to a member function get_thumbnail_by_type() on null
А вот если указать приоритет:
add_action('carbon_fields_register_fields', 'postsCustomFields', 1);
Проблема исчезает
Второй момент — когда необходимо сделать WP_Query по ID ассоциативного поля. Этот вопрос найти в интернете уже проще.
$reverse_results = new WP_Query( array(
'post_type' => 'location',
'meta_query' => array(
array(
'key' => 'location_related_people',
'carbon_field_property' => 'id',
'compare' => '==',
'value' => get_the_ID(),
),
),
) );
Если метод выше не работает, можно сделать так:
$items = carbon_get_the_post_meta('detail_service_fifth_items');
$ids = wp_list_pluck( $items, 'id' );
$args = array(
'post_type' => 'post',
'post__in' => $ids,
);
$query = new WP_Query($args);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) { $query->the_post();
get_template_part('partials/portfolioImageItem');
}
}
wp_reset_postdata();
Выборка элементов по checkbox:
$args = array(
'posts_per_page' => carbon_get_theme_option('second_section_num'),
'post_type' => 'diseases',
'meta_query'=>array(
array(
'key' => 'disease_show_on_front',
'value' => 'yes',
),
),
);
В остальном же — все упирается в документацию. Буду ли я работать с плагином? — однозначно буду — мне понравилось. Можно создавать кучу настроек для админки и легко тиражировать все поля. Все лежит в functions.php.
Более того — все легально и бесплатно.
Вот еще решение, как устранить ошибку с get_thumbnail_by_type(): придумывайте составные названия для полей. Например, если у вас ассоциативное поле в поле complex, называется "category" - то это может вызвать ошибку. Но если назвать, например, "catalog_category" - то часто это может помочь решить проблему. Я работаю с CF с 2018, очень люблю эту библиотеку, но все время он странно ведет себя с названиями полей. Ладно-бы это были явные дубли, но ведь поле внутри complex должно быть изолировано от остальных, потому что не имеет отношения к ним.
Согласен, именно так и сделали в нашем решении https://devstages.ru/chistyj-shablon-dlya-wordpress/.
Я для полей создал отдельный файл и подключил в function.php. Так удобнее возвращаться к редактированию полей.
Однозначно плюсов у этого решения больше) Уже несколько лет использую для своих проектов =)