2017-07-28 5 views
5

क्या वर्डप्रेस में या केवल PHP में किसी विशिष्ट मार्ग पर मिडलवेयर संलग्न करने का कोई तरीका है? मैं अपलोड फ़ोल्डर में पहुंच की इजाजत देने से पहले एक मिडलवेयर फ़ंक्शन चलाने के लिए चाहता हूं ताकि यह जांच सके कि उपयोगकर्ता को इसे डाउनलोड करने से पहले फ़ाइल तक पहुंच है या नहीं।विशिष्ट मौजूदा मार्ग पर मिडलवेयर संलग्न करें

मैं Node.js में एक पृष्ठभूमि से आते हैं/तो व्यक्त अगर यह मदद करता है मैं इस तरह कुछ करने के लिए करना चाहते हैं:

app.use('/wp-content/uploads', function(req, res, next) { 
    // do stuff with req and call next to continue, 
    // or use res to end the request early. 
}); 
+0

आप कोई भी मिडलवेयर नहीं जोड़ सकते हैं क्योंकि वर्डप्रेस के पास कोई अनुरोध/प्रतिक्रिया अबास्ट्रक्शन नहीं है। केवल कस्टम प्लगइन लिखने की संभावना है जो दी गई कार्रवाई पर प्रतिक्रिया करेगी। आप आधिकारिक दस्तावेज़ –

उत्तर

0

मैं अपने विवरण से आपके उपयोग के मामले के बारे में क्या मिलता है से, आप कर सकते हैं आपकी समस्या को सिर्फ पहले से ही उपलब्ध कई वर्डप्रेस plugins में से एक का उपयोग कर हल, उदाहरण के लिए आप अपलोड और सामग्री के डाउनलोड को संभालने के लिए एक "downnload प्रबंधक" का उपयोग कर सकते हैं: https://wordpress.org/support/plugin/download-manager या आप अधिक प्लगइन्स पा सकते हैं https://wordpress.org/plugins/easy-digital-downloads/

की तरह कुछ का उपयोग यहां https://wordpress.org/plugins/

तुम सच में कुछ कस्टम लिखना चाहते हैं, तो आप उपयोग एक फिर से लिखना एक "protect.php" स्क्रिप्ट के माध्यम से अपलोड करने के लिए सभी अनुरोधों को फ़ोल्डर भेजने के लिए जोड़ सकते हैं, .htaccess फाइल में कुछ इस तरह जोड़ने

RewriteCond %{REQUEST_FILENAME} -s 
RewriteRule ^wp-content/uploads/(.*)$ protect.php?filename=$1 [L,QSA] 

protect.php स्क्रिप्ट में आप आप अनुमति देने के लिए/आप WP-भार को शामिल करना चाहिए पहुँच न करे विशिष्ट "फ़ाइल नाम"

अंदर आप कस्टम protect.php फ़ाइल WP कार्यों का उपयोग करने के लिए कस्टम तर्क लागू कर सकते हैं .php, इस तरह अधिक या कम:

require_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/wp-load.php'); 
+0

से डब्ल्यूपी कार्यों के बारे में अधिक जान सकते हैं उत्तर के लिए धन्यवाद, मुझे यकीन नहीं है कि किसी को जवाब देने में इतना समय क्यों लगा। मैंने अन्य प्लगइन्स को देखा लेकिन मेरी ज़रूरतों के लिए मुझे वास्तव में कुछ कस्टम चाहिए। इसके अलावा मैं Nginx का उपयोग कर रहा हूं, अपाचे नहीं, तो क्या आप मुझे Nginx में एक उदाहरण दिखा सकते हैं? क्या मैं वर्डप्रेस लाइब्रेरी और वर्तमान में लॉग इन उपयोगकर्ता को इस अन्य स्क्रिप्ट से एक्सेस करने में सक्षम हूं? – chrispytoes

+0

नेगिनिक्स का कभी भी उपयोग नहीं किया, लेकिन आप पढ़ सकते हैं कि अपाचे नियमों को यहां nginix नियमों में कैसे परिवर्तित करें: https://www.nginx.com/blog/converting-apache-to-nginx-rewrite-rules/ –

2

सामग्री या डाउनलोड तक पहुंच प्रतिबंधित करने के लिए कई वर्डप्रेस प्लगइन्स हैं, अधिकतर पंजीकृत होने के तर्क पर आधारित हैं या नहीं और उपयोगकर्ता के पास कौन से विशेषाधिकार हैं। उनके पीछे

बुनियादी तर्क इस तरह है:

// Redirect guests 
function guest_redirect() { 
    $guest_routes = array(
     'member-login', 
     'member-account', 
     'member-register', 
     'member-password-lost', 
     'member-password-reset' 
    ); 
    // Force login or registration 
    if (!is_user_logged_in() && !is_page($guest_routes)) { 
     wp_redirect('member-login'); 
     exit; 
    } 
} 
add_action('template_redirect', 'guest_redirect'); 

इसके अलावा, वर्डप्रेस REST API (official doc here for your need) है। हालांकि, सही तरीके से परीक्षण किए बिना आरईएसटी एपीआई का उपयोग कर उत्पादन साइट के लिए अपनी कस्टम चीज का उपयोग जोखिम भरा और उपयोग करने के लिए जटिल हो सकता है।

संबंधित मुद्दे