3

我正在尝试为使用高级自定义字段插件定义的自定义字段添加新过滤器。

在此处输入图像描述

我想过滤艺术家的年龄,我查阅了一些文档,但在进展过程中感到困惑。(我是wordpress新手)

我已将以下代码行添加到我的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);

我希望实现的是在由高级自定义字段定义的艺术家元数据字段组中的年龄字段上过滤艺术家,下图进行说明。

在此处输入图像描述

4

1 回答 1

3

感谢@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);

于 2020-12-27T07:25:36.147 回答