Как сложить значения нескольких полей созданных в Custom Content Type от Crockoblock?
Как сложить значения нескольких полей созданных в Custom Content Type от Crockoblock?
Я создал Custom Content Type - Игрок, у которого помимо персональных данных есть поля с цифровыми значениями его скилов (от 0 до 100).
Например: Сила - 98 Скорость - 81 Ловкость - 78 ... итд
Посоветуйте Плагин, который поможет выбрать и сложить необходимые значения, чтобы вывести сумму данных показателей в профайле данного игрока. Надеюсь понятно объяснил) Спасибо!
https://basket24.online/akramov/ Здесь пример
Дополнительно:
Проще говоря нужно вывести сумму значений определенных полей, которые заполнены в ручную при создании профайла игрока
Ответы:
get_post_meta
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В JetEngine/Crocoblock Custom Content Type значения полей можно сложить, но способ зависит от того, где именно нужно вывести сумму: в карточке, в шаблоне single, в listing grid или сохранить как отдельное поле.
Если нужно просто вывести сумму на фронте, можно получить поля и сложить их в PHP. Для CCT данные обычно хранятся не как обычные post meta, поэтому стандартный
get_post_meta()может не подойти. Нужно использовать API JetEngine или динамические callbacks, если вывод идёт через Listing.В простом PHP принцип такой:
$strength = (int) ($item['strength'] ?? 0); $speed = (int) ($item['speed'] ?? 0); $agility = (int) ($item['agility'] ?? 0); $total = $strength + $speed + $agility;
Если выводите через JetEngine Listing, чаще удобнее создать custom callback/function и использовать его как Dynamic Field callback. Например:
function my_player_total_score($value, $object_id, $field) { $strength = (int) jet_engine()->listings->data->get_meta('strength'); $speed = (int) jet_engine()->listings->data->get_meta('speed'); $agility = (int) jet_engine()->listings->data->get_meta('agility'); return $strength + $speed + $agility; }
Точный код может отличаться по версии JetEngine и типу объекта, поэтому сначала проверьте, как Ваш CCT отдаёт данные. Иногда проще вывести hidden dynamic fields и посмотреть объект через debug.
Если сумма нужна для сортировки и фильтрации, лучше сохранять её в отдельное поле при сохранении записи/CCT item. Иначе при каждом выводе придётся считать на лету, а сортировка по вычисляемому значению может быть неудобной или медленной.
Для сохранения суммы ищите hook JetEngine после сохранения CCT item. Логика: пользователь сохранил Сила/Скорость/Ловкость, код пересчитал total_score и записал его в отдельное поле.
Итог: для простого вывода — callback/динамическое поле. Для сортировки, рейтинга и фильтров — отдельное вычисляемое поле, которое обновляется при сохранении.