WP REST JSON API এর মাধ্যমে অন্য পিএইচপি ওয়েবসাইটে জনপ্রিয় পোস্টটি দেখান


9

একই ডোমেনের অধীনে আমাকে অন্য পিএইচপি ওয়েব সাইটে জনপ্রিয় এবং সাম্প্রতিক পোস্টগুলি দেখাতে হবে।

উদাহরণ:

  1. www.example.com -> প্রধান ওয়েবসাইট (পিএইচপি, মাইএসকিএল)
  2. www.example.com/blog -> ওয়ার্ডপ্রেস ব্লগ

মূল ওয়েবসাইটে ব্লগের জনপ্রিয়, সাম্প্রতিক পোস্টগুলি দেখাতে হবে।

দয়া করে নোট করুন যে ব্লগ এবং প্রধান ওয়েবসাইট দুটি পৃথক ডাটাবেস ব্যবহার করে।

আমি তার জন্য WP REST JSON API প্লাগইনটি ব্যবহার করার সিদ্ধান্ত নিয়েছি । এখন আমার আলাদা প্রশ্ন আছে।

আমি গত সপ্তাহে জনপ্রিয় পোস্ট পুনরুদ্ধার করতে নিম্নলিখিত কোড ব্যবহার করি। আমার আসলে যা দরকার তা হ'ল এপিআই কলের মাধ্যমে এই একই ডেটা পাওয়া।

$args = array(
    'date_query' => array( array( 'after' => '1 week ago' ) ),  
    'posts_per_page' => $recent_posts_count,
    'ignore_sticky_posts' => 1,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
);
$popularposts = new WP_Query( $args );

আমি এটা কিভাবে করবো?


এটি প্রচুর বার জিজ্ঞাসা করা হয়েছে। অনুগ্রহ করে অনুসন্ধান করুন।
kraftner

1. আপনার যদি নতুন প্রশ্ন থাকে তবে দয়া করে একটি নতুন প্রশ্ন খুলুন। এই ক্ষেত্রে এটি ঠিক আছে কারণ এটি সম্পূর্ণ নতুন নয়। যাইহোক শিরোনাম এখন বিভ্রান্ত করছে। 2. আপনি ডকুমেন্টেশনটি দেখেছেন: wp-api.org
kraftner

আমি শিরোনামটিও আপডেট করেছি, তবে আমি
ডকটির

উত্তর:


8

আমি আপনার আপডেট করার জন্য একটি ছোট উত্তর দিতে, সঙ্গে এই কাজ করবে ডাব্লু এপিআই । এপিআই-তে ডাব্লুপি_কিউয়ারি ব্যবহার করার সম্ভাবনা রয়েছে তবে ইউআরএলটিতে প্যারামিটারগুলিও রয়েছে।

পোস্টের স্থিতি থেকে সামগ্রীটি টানতে একটি ইউআরএল দেখতে এই রকম হবে:

http://example.com/wp-json/posts

আপনার ব্যবহৃত WP_Query পরামিতিগুলির সাথে সামগ্রী টানতে আপনি এটি এইভাবে করতে পারেন:

http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC

আপনি url এ সমস্ত পরামিতি সহ আপনার কাস্টম ক্যোয়ারী তৈরি করতে পারেন। আপনি দেখতে পাচ্ছেন যে ডেটা দখল করার পদ্ধতিটি কীভাবে WP_Queryএকটি স্ট্যান্ডার্ড ওয়ার্ডপ্রেস লুপের জন্য ব্যবহারের সাথে পরিচিত familiar আপনি যদি কোনও প্যারামিটার নির্দিষ্ট না করেন তবে ডিফল্টগুলি WP_Queryব্যবহার করা হবে।

ফলাফলটি জসন, যা আপনি আপনার জন্য এবং বাইরের সাইটের জন্য পার্স করতে পারেন।

আরও দেখুন API- এর সাইটে আরো পরামিতি এবং ডকুমেন্টেশন জন্য।

জন্য আপডেট date_query

এপিআই এর মতো ক্যোয়ারির জন্য ফলাফল তৈরি করতে পারে না query_date। সমস্ত সম্ভাব্য পরামিতিগুলির জন্য ডকুমেন্টেশন দেখুন ।

তবে নতুন সংস্করণটি প্রকাশের দিন, সপ্তাহগুলিতে প্রকাশিত হবে। এবং এই তারিখের প্রশ্নের জন্য একটি সমাধান সম্পর্কে আলোচনার জন্য এই সমস্যাটি দেখুন । বিকল্প হুক মাধ্যমে একটি কাস্টম ফিল্টার ব্যবহার করুন, যেমন:

// Allow datequery in /posts filter
add_filter( "json_query_vars", function( $query_args ) {
    return array_merge( $query_args, 
        array( "date_query" => array( array( "after" => "1 week ago" ) ) )
    );
} );

জন্য আপডেট meta_query

ডিফল্ট ডাব্লুপি-কোয়েরির এই বৈশিষ্ট্যটিও এপিআই করতে পারে না। তবে আপনি এই প্রয়োজনীয়তার সাথে API উন্নত করতে একটি হুক ব্যবহার করতে পারেন। এছাড়াও এখানে একটি ছোট উদাহরণ।

add_filter('json_query_var-meta_query', 'add_meta_query', 10, 1);

function add_meta_query( $data ){

    $args = array();
    $args['relation'] = 'AND';

    foreach ( $data as $key => $value ) {
        if ( 'relation' === $key ) {
            $args['relation'] = $data['relation'];
        }

        if ( substr($key, 0, 3) === 'key' ) {
            $arg_num = substr( $key, 3 );
            $args[ (int) $arg_num ][ 'key' ] = $value;
        }

        if (  substr( $key, 0, 7 ) === 'compare' ) {
            $arg_num_comp = substr( $key, 7 );
            $args[ (int) $arg_num_comp ][ 'compare' ] = $value;
        }
    }

    return $args;
}

ইতিমধ্যে, আমি ইতিমধ্যে সার্ভারে Wp_query পোস্ট ফিল্টার নকল করতে JSON কে এইরকম শান্ত বলতে পারি:

?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS

এই উত্তর থেকে ভিত্তি করে মেটা ক্যোয়ারী আপডেট ।


কীভাবে কীভাবে লাইনটিকে 'date_query' => array( array( 'after' => '1 week ago' ) ), ক্যোয়ারী স্ট্রিং হিসাবে রূপান্তর করবেন আপনার কোনও ধারণা আছে
জ্যানিথ চিন্তানা

আমি এটিকে একটি উত্তর হিসাবে গ্রহণ করতে চাই, তবে উপরের মন্তব্য সম্পর্কে আপনার যদি কিছু ধারণা থাকে তবে আপনি আপনার মতামতগুলি ভাগ করতে পারেন।
জেনিথ চিন্তানা

filter[posts_per_page]=2&filter[order]=ASCএই দুটি
বাদে

@ জ্যানিথচিন্তানা আমি আবার পরীক্ষা করেছি, ফিল্টার পরম ঠিকঠাক কাজ করে। - উদাহরণ হিসাবে http://localhost/wpbeta/plugins/wp-json/posts?filter[posts_per_page]=1&filter[order]=ASC। উত্তরে আমার আপডেটে আরও অনেক কিছু।
বুলেটজ

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