Пытаясь нацелиться на параметр acf в запросе getEntityRecords [закрыто]

Вопрос или проблема

У меня возникли трудности с созданием списка аргументов запроса, которые выделяют посты с параметром acf для одного из наших пользовательских таксономий. Мы создали таксономию под названием “language” с ярлыком “ln”. Если я пишу работающий запрос, он выглядит так:

getEntityRecords("postType", postType, { per_page: -1, _embed: true, order: "desc", orderby: "date", ln: selectedLanguage });

К моему вопросу приложен скриншот с логами консоли результатов.

скриншот возвращенных постов

Итак, в моем методе записей сущности есть свойство “ln”, которое возвращает массив идентификаторов языков, в данном случае ln: [83]. Я хотел бы нацелиться на объект “acf”, возвращаемый в записях постов, который включает “language” и “select_translations”: null.

У меня есть что-то вроде этого, что возвращает все, включая записи постов, которые включают любой язык. Вот пример этого:

аргументы запроса для выбора acf.language: false

Как мне нацелиться на свойство языка в пределах свойства acf?

Ответ или решение

Вопрос относительно параметры ACF (Advanced Custom Fields) в запросе getEntityRecords в WordPress предполагает знание как ваш сайт организован и структуры данных, которые используются в вашей инсталляции WordPress. Этот запрос имеет цель выборки записей постов с конкретным значением в одном из пользовательских таксономий или полей ACF. В данном контексте, вы пытаетесь применить это к полю "language" и параметру ACF в записи поста.

Теория

При работе с пользовательскими полями в WordPress, такими как Advanced Custom Fields (ACF), важно понимать, как данные сохраняются и могут быть получены. ACF расширяет функциональность WordPress, позволяя создавать сложные структуры данных. ACF использует мета-поля (postmeta) в базе данных для хранения дополнительной информации о записях. Это значит, что ACF объекты, такие как "language", хранятся в формате ключ-значение в таблице wp_postmeta.

Функция getEntityRecords — это обычно часть JavaScript API WordPress для работы с REST API, который позволяет запрашивать и фильтровать данные, такие как записи постов, с использованием AJAX. Ваша задача — модифицировать стандартный запрос для получения записей таким образом, чтобы они содержали специфическое значение ACF.

Пример

Предположим, что у вас есть пользовательская таксономия "language" с идентификатором (ID) термина, равным 83, и что вы хотите получить все записи, где это поле совпадает. В ACF "language", скорее всего, хранится как метаполе с ключом, например, language_id.

Теперь, если вы выполняете запрос через REST API, путем передачи параметров, то, чтобы фильтровать данные по ACF, необходимо использовать meta_query. Это будет выглядеть следующим образом в PHP:

$args = array(
    'post_type' => 'post',
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => 'language_id',
            'value' => '83',
            'compare' => '='
        )
    )
);
$query = new WP_Query($args);

Однако ваше задание — адаптировать это для использования с getEntityRecords в JavaScript.

Применение

Если вы работаете с REST API через getEntityRecords, вам необходимо обеспечить передачу дополнительных параметров, таких как meta_key и meta_value, чтобы REST API мог правильно вернуть отфильтрованный список записей.

Вот пример того, как можно адаптировать стандартный getEntityRecords так, чтобы он использовал фильтрацию с помощью ACF:

wp.apiFetch({
    path: `/wp/v2/posts?per_page=-1&_embed=true&order=desc&orderby=date&meta_key=language_id&meta_value=${selectedLanguage}`
}).then(posts => {
    console.log(posts);
});

Эти параметры («meta_key» и «meta_value») помогут вам фильтровать записи по значениям ACF. Конечно, этот код требует наличия возможности на серверной стороне обрабатывать такие параметры, что может потребовать изменения настроек вашего REST API с помощью соответствующих хуков в WordPress.

Заключение

Чтобы целенаправленно запросить только те записи, которые имеют специфические значения ACF, необходимо корректно использовать потенциал REST API WordPress и создавать кастомизированные запросы. Это требует сочетания знаний о WordPress, JavaScript и PHP для настройки логики как на стороне сервера, так и на стороне клиента.

Понимание структуры данных, правильные структурирование запросов и работа с пользовательскими полями — это ключевые элементы при решении подобных задач. Важно помнить, что ваши изменения и дополнения должны быть устойчивыми и безопасными, при этом придерживаясь рекомендаций WordPress по разработке и оптимизации приложений.

Оцените материал
Добавить комментарий

Капча загружается...