Как добавить настраиваемые фильтры в расширенные настраиваемые поля graphql-wp

Я пытаюсь добавить новый фильтр для настраиваемого поля, определенного с помощью плагина Advanced Custom Fields.

введите здесь описание изображения

Я хочу отфильтровать возраст художников, я просмотрел некоторую документацию, но запутался в процессе. (я новичок в вордпрессе)

Я добавил следующие строки кода в свой functions.php, к сожалению, без каких-либо заметных результатов.

add_action('graphql_register_types', function () {

    $customposttype_graphql_single_name = "artist";

    register_graphql_field('RootQueryTo' . $customposttype_graphql_single_name . 'ConnectionWhereArgs', 'age', [
        'type' => 'ID',
        'description' => __('The ID of the post object to filter by', 'your-textdomain'),
    ]);
});

add_filter('graphql_post_object_connection_query_args', function ($query_args, $source, $args, $context, $info) {

    $post_object_id = $args['where']['age'];

    if (isset($post_object_id)) {
        $query_args['meta_query'] = [
            [
                'key' => 'artist_metadata',
                'value' => $post_object_id,
                'compare' => '='
            ]
        ];
    }

    return $query_args;
}, 10, 5);

Чего я хочу добиться, так это отфильтровать исполнителей по полю возраста, которое находится в группе полей artist_metadata, определенной расширенными пользовательскими полями, изображение ниже для пояснения.

введите здесь описание изображения


person TheAlphaKarp    schedule 26.12.2020    source источник
comment
попробуйте Artist, так как все объединенные строки должны быть PascalCased .. и целочисленного типа?   -  person xadm    schedule 27.12.2020
comment
Это и добавление возраста в качестве ключа вместо artist_metadata решило эту проблему. Спасибо!   -  person TheAlphaKarp    schedule 27.12.2020


Ответы (1)


Удалось заставить это работать благодаря @xadm

add_action('graphql_register_types', function () {

    // PascalCase here
    $customposttype_graphql_single_name = "Artist";

    register_graphql_field('RootQueryTo' . $customposttype_graphql_single_name . 'ConnectionWhereArgs', 'age', [
        // Integer because age
        'type' => 'Integer',
        'description' => __('The ID of the post object to filter by', 'your-textdomain'),
    ]);
});

add_filter('graphql_post_object_connection_query_args', function ($query_args, $source, $args, $context, $info) {

    $post_object_id = $args['where']['age'];

    if (isset($post_object_id)) {
        $query_args['meta_query'] = [
            [
                // The key should be age, not artist_metadata
                'key' => 'age',
                'value' => $post_object_id,
                'compare' => '='
            ]
        ];
    }

    return $query_args;
}, 10, 5);

person TheAlphaKarp    schedule 27.12.2020