WordPress के साथ silex या स्लिम रन करें


10

मैं वर्डप्रेस पर एक थीम चला रहा हूं। इस विषय में, मैं कुछ AJAX कॉल कर रहा हूं जहां मैं कुछ प्रतिक्रिया की उम्मीद कर रहा हूं। ( http://example.com/capis/v0/packages/ )

Http कॉल के ऊपर सेवा करने के लिए मैं http सर्वर के रूप में silex का उपयोग कर रहा हूं।

index.php

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Silex\Application;

$app = new Silex\Application();

$app->POST('/capis/v0/packages/', function(Application $app, Request $request) {
            # logic            
            return new Response('HELLO');
            });
$app->run();

मैं 8080 पोर्ट पर एक सर्वर चलाने के लिए php का उपयोग कर रहा हूं जो ajax कॉल पर डेटा परोस रहा है।

php -S localhost:8080 -t web web/index.php

अब मैं केवल वर्डप्रेस का उपयोग करने से इन अजाक्स कॉल की सेवा करना चाहता हूं। मैं विशिष्ट php सर्वर नहीं चलाना चाहता।


अधिक सर्वर-साइड प्रश्न की तरह लगता है। यदि आप अपने स्थानीय वर्डप्रेस इंस्टॉलेशन से केवल अनुरोधों की अनुमति चाहते हैं तो मुझे लगता है कि आपको अपने सर्वर को कॉन्फ़िगर करने की आवश्यकता है :)
कोल्या कोरोबोच्किन

8
मैं Silex के बजाय REST API का उपयोग करने की अत्यधिक सलाह दूंगा।
क्राफ्टर

@Kraftner द्वारा उल्लिखित REST API के अलावा, आप Themosis ढांचे में भी देख सकते हैं ।
फेबियन मारज

एक छोटे से उदाहरण के लिए मुझे देखें। wordpress.stackexchange.com/questions/301493 मेरे लिए डेवलपर . wordpress.org/rest-api/extending-the-rest-api/… बहुत उपयोगी था।
क्लेमेंस टॉल्बूम

आप WP-REST API का उपयोग कर सकते हैं या आप wp_ajax एक्शन का उपयोग करके कस्टम API बना सकते हैं। यहाँ आधिकारिक डॉक्टर है
idpokute

जवाबों:


1

वहाँ थोड़ा है कि आप Silex सर्वर के साथ कर सकते हैं जो Wordpress के माध्यम से नहीं किया जा सकता है, लेकिन यह AJAX कॉल का जवाब देने के लिए WP प्राप्त करने के लिए थोड़ा प्रयास करता है।

पहला कदम AJAX के माध्यम से कॉल उपलब्ध कराना है। इसके लिए अपने कार्यों के लिए एक पंक्ति जोड़ने की आवश्यकता है

add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');

अगर यह कॉल मेहमानों और ग्राहकों (अर्थात ADMIN) के लिए किया जाएगा, तो आपको लाइन की भी आवश्यकता होगी।

add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');

जो एक ही काम करता है लेकिन अधिक समावेशी है।

अगला कदम अजाक्स कॉल बनाना है। आप इस तरह के कॉल का उदाहरण नहीं देते हैं, इसलिए मैं आपको केवल $ wpdb के डॉक्स को देखने की सलाह दे सकता हूं । WP में डेटाबेस से जानकारी प्राप्त करने और जटिल प्रश्नों के लिए कॉल का एक व्यापक सेट है, आप हमेशा $ wpdb-> क्वेरी () का उपयोग कर सकते हैं जो आपके लिए मनमाना SQL चलाएगा।

AJAX तर्क my_ajax_call () फ़ंक्शन में जाता है और परिणाम को एक सरणी या ऑब्जेक्ट में रखा जाना चाहिए। आपके फ़ंक्शन की अंतिम पंक्ति wp_send_json_success ($ वापसी) पर कॉल होनी चाहिए जहां $ वापसी वस्तु / जानकारी की सरणी लौटाया जाना है।

इस प्रणाली का उपयोग करते हुए, मैं wp_admin सेक्शन में पृष्ठों को जोड़ने में सक्षम हूं ताकि शॉप मालिकों को WooCommerce डेटा से पुन: स्थापना के लिए ऑर्डर करने की अनुमति दी जा सके और विविधताओं के लिए एक साइड-लोड गैलरी (वू केवल माता-पिता के लिए एक गैलरी की अनुमति देता है)।

यहाँ एक त्वरित उदाहरण है:

function my_ajax_call() {
    $return['data'] = date('Y-m-d');
    wp_send_json_success($return);
    wp_die();
}

और फिर जावास्क्रिप्ट में, अधिक कदम आवश्यक हैं। एक बात के लिए, आपको WP AJAX URL की आवश्यकता होगी जो आमतौर /wp-admin/admin-ajax.phpपर होता है लेकिन कुछ हद तक भिन्न हो सकता है। इसे अक्सर वैश्विक अजाक्सुरल के रूप में जावास्क्रिप्ट के लिए उपलब्ध कराया जाता है या किसी अन्य वस्तु की तरह टक किया जा सकता है woocommerce.ajaxurl। आपको एक एक्शन तत्व के साथ जावास्क्रिप्ट ऑब्जेक्ट का निर्माण करने की आवश्यकता होगी जो आपके फ़ंक्शन को इंगित करता है और किसी भी अन्य चर को आपको AJAX कॉल करने के लिए पास करने की आवश्यकता हो सकती है। उदाहरण के लिए:

data = {'action':'my_ajax_call'}

या

data = {'action':'my_ajax_call', 'todo':'getDate'}

(function($){
    $.ajax{
        url:ajaxurl,
        data: data,
        success: function(trn) {$('#data').html(trn.data)}
})(jQuery)

HTH


कुछ और वर्डप्रेस और अजाक्स अनुसंधान के लिए मैं टॉम मैकफर्लिन द्वारा बनाए गए लेखों को पढ़ने का सुझाव दे सकता हूं, वह वर्डप्रेस के बारे में v.knowledgable है और विशेष रूप से अजाक्स पर कुछ अच्छे पोस्ट हैं [ google.co.uk/…
virtualstastast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.