एक उत्तर से कम, लेकिन इसके साथ मेरे अनुभव से सीधे चीजों की एक सूची - शायद आपने कुछ अनदेखी की है।
अनुरोध और उसके परिणामों को डीबग करना
Diggin के बिना अपडेट प्रक्रिया में बहुत गहरा है, लेकिन WP HTTP API WP_HTTP
वर्ग का उपयोग करता है । यह एक अच्छी बात भी प्रस्तुत करता है: एक डिबग हुक।
do_action( 'http_api_debug', $response, 'response', $class, $args, $url );
जहां $response
एक WP_Error
वस्तु भी हो सकती है जो शायद आपको अधिक बताती है।
नोट: एक संक्षिप्त परीक्षण से, यह फ़िल्टर केवल (किसी कारण से) काम लगता है यदि आप इसे उस स्थान के करीब रखते हैं जहाँ आप वास्तव में अनुरोध कर रहे हैं। तो शायद आपको नीचे दिए गए किसी एक फ़िल्टर पर कॉलबैक के भीतर से कॉल करना होगा।
WP_HTTP
वर्ग तर्क
कक्षाएं तर्क स्वयं फ़िल्टर करने योग्य होती हैं, लेकिन कुछ लोग WP के मानने की आवश्यकता वाले तरीकों से वापस प्राप्त करते हैं।
apply_filters( 'http_request_args', $r, $url );
एक तर्क है ssl_verify
, जो डिफ़ॉल्ट रूप से सच है (लेकिन मेरे लिए बड़े पैमाने पर समस्याओं का कारण बनता है - उदाहरण के लिए - गिटहब) से अपडेट करते समय। संपादित करें: परीक्षण अनुरोध को डीबग करने के बाद, मुझे एक और तर्क मिला कि सत्यापित करने के लिए सेट है कि क्या एसएसएल सेट है true
। इसे कहा जाता है sslverify
(अंडरस्कोर को अलग किए बिना)। कोई विचार नहीं है कि यह खेल में कहां आया, अगर यह वास्तव में उपयोग में है या छोड़ दिया गया है और यदि आपके पास इसके मूल्य को प्रभावित करने का मौका है। मैंने इसे 'http_api_debug'
फिल्टर का उपयोग करके पाया ।
पूरी तरह से कस्टम
आप "बस" भी पूरे इंटर्नल को ओवरराइड कर सकते हैं और कस्टम सेटअप के साथ जा सकते हैं। उसके लिए एक फिल्टर है।
apply_filters( 'pre_http_request', false, $r, $url );
पहले आर्ग को सही पर सेट करने की आवश्यकता है। से आप अंदर के तर्कों $r
और परिणाम से बातचीत कर सकते हैं parse_url( $url );
।
प्रतिनिधि
एक और चीज जो काम कर सकती है वह सब कुछ एक कस्टम प्रॉक्सी के माध्यम से चल सकती है। यह आपके में कुछ सेटिंग्स की जरूरत है wp-config.php
। मैंने पहले कभी ऐसा करने की कोशिश नहीं की है, लेकिन मैं थोड़ी देर पहले स्थिरांक के माध्यम से भाग गया और कुछ उदाहरणों को अभिव्यक्त किया जो काम करना चाहिए और इसमें कुछ टिप्पणियां शामिल थीं जो मुझे एक दिन चाहिए। आप को परिभाषित करने के लिए है WP_PROXY_HOST
और WP_PROXY_PORT
एक मिनट के रूप में। स्थापना। कुछ भी काम नहीं करेगा और यह बस आपके प्रॉक्सी को बायपास करेगा।
# HTTP Proxies
# Used for e.g. in Intranets
# Fixes Feeds as well
# Defines the proxy adresse.
define( 'WP_PROXY_HOST', '127.0.84.1' );
# Defines the proxy port.
define( 'WP_PROXY_PORT', '8080' );
# Defines the proxy username.
define( 'WP_PROXY_USERNAME', 'my_user_name' );
# Defines the proxy password.
define( 'WP_PROXY_PASSWORD', 'my_password' );
# Allows you to define some adresses which
# shouldn't be passed through a proxy.
define( 'WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com' );
संपादित करें
WP_HTTP
कक्षा सामान्य रूप से के रूप में कार्य आधार (विभिन्न परिदृश्यों के लिए बढ़ाया जाएगा) वर्ग। विस्तार WP_HTTP_*
वर्ग हैं Fsockopen
, Streams
, Curl
, Proxy
, Cookie
, Encoding
। यदि आप 'http_api_debug'
-बैक करने के लिए कॉलबैक को हुक करते हैं , तो तीसरा तर्क आपको बताएगा कि आपके अनुरोध के लिए किस वर्ग का उपयोग किया गया था।
WP_HTTP_curl
कक्षा के अंदर , आपको request()
विधि मिल जाएगी । यह विधि एसएसएल व्यवहार को रोकने के लिए दो फ़िल्टर प्रदान करती है: एक स्थानीय अनुरोधों के लिए 'https_local_ssl_verify'
और एक दूरस्थ अनुरोधों के लिए 'https_ssl_verify'
। WP संभवतः के local
रूप में परिभाषित करेगा localhost
और आपको इसके बदले में क्या मिलेगा get_option( 'siteurl' );
।
तो आपके द्वारा उस अनुरोध को करने से पहले (या एक कॉलबैक से जो निकटतम अनुरोध के लिए झुका हुआ है) करने के लिए मैं निम्नलिखित प्रयास करना चाहूंगा:
add_filter( 'https_ssl_verify', '__return_true' );
# Local requests should be checked with something like
# 'localhost' === $_SERVER['HTTP_HOST'] or similar
# add_filter( 'https_local_ssl_verify', '__return_true' );
सिडेनोट: ज्यादातर मामलों में WP_HTTP_curl
प्रॉक्सी को संभालने के लिए उपयोग किया जाएगा।