উত্তরের চেয়ে কম নয়, তবে আমার অভিজ্ঞতা থেকে সরাসরি জিনিসগুলির একটি তালিকা - এটি সম্ভবত আপনি কিছু উপেক্ষা করেছেন।
অনুরোধ এবং এর ফলাফলগুলি ডিবাগ করা হচ্ছে
আপডেট প্রক্রিয়াটির খুব গভীরভাবে ডিগগিন ছাড়াই, তবে ডাব্লুপি এইচটিটিপিআইপি 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'। ডাব্লু সম্ভবত সংজ্ঞায়িত করবে 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প্রক্সিগুলি হ্যান্ডেল করতে ব্যবহৃত হবে।