একাধিক মেটা কী দ্বারা ডাব্লুপি REST এপিআই v2 অনুসন্ধান করুন


9

REST এপিআই এর ভি 2 ব্যবহার করে, আমি একাধিক মেটা কী দ্বারা কিছু পোস্ট জিজ্ঞাসা করতে চাই । ভি 1 দিয়ে আমি ইউআরএলের মতো ফর্ম্যাট করতে সক্ষম হয়েছি &filter[meta_value][month]=12&[meta_value][year]=2015এবং এটি কাজ করেছে (এপিআইতে মেটা মানগুলি প্রকাশ করার পরে)।

এখন ভি 2 দিয়ে আমি কেবল এই গিটহাব থ্রেডে তালিকাবদ্ধ পদ্ধতি ব্যবহার করে এটি কাজ করতে পারি: https://github.com/WP-API/WP-API/issues/1599#issuecomment-161166805

মূলত, rest_query_varsফিল্টারটি ব্যবহার করে মেটা ক্ষেত্রগুলি যুক্ত করুন :

add_filter( 'rest_query_vars', 'flux_allow_meta_query' ); function flux_allow_meta_query( $valid_vars ) { $valid_vars = array_merge( $valid_vars, array( 'meta_key', 'meta_value', 'meta_compare' ) ); return $valid_vars; }

যে, আমি দ্বারা ফিল্টার করতে পারেন এক মত একটি URL ব্যবহার মেটা কী wp-json/wp/v2/posts?filter[meta_key]=test&filter[meta_value]=on

তবে, মনে হচ্ছে একাধিক মেটা কীগুলিতে ফিল্টার করার একমাত্র উপায় হ'ল একটি কাস্টম ফিল্টার। কেউ আমাকে এটি করার সঠিক দিক নির্দেশ করতে পারে?

উত্তর:


4

একটি কাস্টম শেষ পয়েন্ট যুক্ত করা সহজ সোজা।

আমি আরও দেখতে দেখতে url পরিবর্তন করেছি

http://example.com/wp-json/namespace/v2/posts?filter[meta_value][month]=12&filter[meta_value][year]=2015

function wp_json_namespace_v2__init()
{

    // create json-api endpoint

    add_action('rest_api_init', function () {

        // http://example.com/wp-json/namespace/v2/posts?filter[meta_value][month]=12&filter[meta_value][year]=2015

        register_rest_route('namespace/v2', '/posts', array (
            'methods'             => 'GET',
            'callback'            => 'wp_json_namespace_v2__posts',
            'permission_callback' => function (WP_REST_Request $request) {
                return true;
            }
        ));
    });

    // handle the request

    function wp_json_namespace_v2__posts($request)
    {
        // json-api params

        $parameters = $request->get_query_params();

        // default search args

        $args = array(
            'post_type'      => 'post',
            'post_status'    => 'publish',
            'numberposts'    => -1,
            // limit to only ids
            // 'fields'      => 'ids', 
        );

        // check the query and add valid items

        if (isset($parameters['filter']['meta_value'])) {
            foreach ($parameters['filter']['meta_value'] as $key => $value) {
                switch ($key) {

                    case 'month':
                        if (is_numeric($value))
                            $args['monthnum'] = $value;
                        break;

                    case 'year':
                        if (is_numeric($value))
                            $args['year'] = $value;
                        break;
                }
            }
        }

        // run query

        $posts = get_posts($args);

        // return results

        $data = array(
            'success' => true,
            'request' => $parameters,
            'count' => count($posts),
            'posts' => $posts,
        );

        return new WP_REST_Response($data, 200);
    }

    flush_rewrite_rules(true); // FIXME: <------- DONT LEAVE ME HERE
}

add_action('init', 'wp_json_namespace_v2__init');

আমি এই প্রতিক্রিয়াটিতে বৈশিষ্ট্যযুক্ত চিত্রটি কীভাবে সংযুক্ত করতে পারি?
শিনিয়া কইজুমী


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.