WP REST JSON API के माध्यम से किसी अन्य php वेबसाइट में लोकप्रिय पोस्ट दिखाएं


9

मुझे उसी डोमेन के अंतर्गत किसी अन्य PHP वेब साइट में लोकप्रिय और हालिया पोस्ट दिखाने की आवश्यकता है।

उदाहरण:

  1. www.example.com -> मुख्य वेबसाइट (php, mysql)
  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 );

मैं उसे कैसे कर सकता हूँ?


यह बहुत बार पूछा गया है। कृपया खोज का उपयोग करें।
क्राफ्टर

1. यदि आपके पास एक नया प्रश्न है, तो कृपया एक नया प्रश्न खोलें। इस मामले में यह ठीक हो सकता है क्योंकि यह पूरी तरह से नया नहीं है। वैसे भी शीर्षक अब भ्रामक है। 2. आपने प्रलेखन देखा है: wp-api.org
क्राफ्टर

मैंने शीर्षक भी अपडेट किया है, हालांकि मैं डॉक्टर के माध्यम से जाऊंगा, धन्यवाद
जनिथ चिंताना

जवाबों:


8

मैं आपको WP API के साथ ऐसा करते हुए आपके अपडेट का एक छोटा सा जवाब दूंगा । एपीआई में WP_Query जैसे कोर में भी उपयोग करने की संभावनाएं हैं, लेकिन यूआरएल में पैरामीटर प्राप्त करें।

पोस्ट स्थिति से सामग्री खींचने के लिए एक URL इस तरह दिखेगा:

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मानक वर्डप्रेस लूप का उपयोग करने के लिए उस डेटा को हथियाने की विधि कैसे परिचित है । यदि आप कोई पैरामीटर निर्दिष्ट नहीं करते हैं, तो उपयोग की जाने वाली चूक का WP_Queryउपयोग किया जाएगा।

इसका परिणाम यह है कि आप बाहरी साइट के लिए पार्स और उपयोग कर सकते हैं।

अधिक मापदंडों और प्रलेखन के लिए एपीआई की साइट भी देखें ।

के लिए अपडेट करें date_query

API क्वेरी की तरह परिणाम नहीं बना सकता है 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

एपीआई भी डिफ़ॉल्ट WP-Query की इस सुविधा को नहीं कर सकता। लेकिन आप इस आवश्यकता को एपीआई बढ़ाने के लिए एक हुक का उपयोग कर सकते हैं। यहाँ एक छोटा सा उदाहरण भी दिया।

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;
}

अब, मैं JSON को इस तरह से संयत कह सकता हूं कि सर्वर पर पहले से ही Wp_query पोस्ट फ़िल्टर की नकल करें:

?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इस दो के अलावा अन्य फिल्टर काम नहीं कर रहा है, इसलिए यह हमेशा हाल के पोस्ट केवल दे रहा है
Janith Chinthana

@ जननिष्ठाथन मैंने फिर से परीक्षण किया है, फ़िल्टर परम ठीक काम करता है। - जैसा कि http://localhost/wpbeta/plugins/wp-json/posts?filter[posts_per_page]=1&filter[order]=ASC। जवाब में नीचे मेरे अपडेट में और भी बहुत कुछ।
बुलेटी

अद्यतन के लिए धन्यवाद, हाँ post_per_pageऔर orderकाम कर रहा है, लेकिन इसके बारे में क्या meta_key। क्या यह इसके साथ काम करता है या मुझे इसके लिए अतिरिक्त काम करने की आवश्यकता है?
जनिथ चिन्तन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.