2016-06-02 10 views
6

मैंने एक प्लगइन विकसित किया है और मेरी प्लगइन में एक कस्टम मीडिया अपलोडर है। जब मैं अपने प्लगइन अपलोडर से कोई भी फाइल अपलोड करता हूं कि फ़ाइल अपलोड की जाती है और वर्डप्रेस डिफ़ॉल्ट uploads/ फ़ोल्डर में सहेजी जाती है।मेरे प्लगइन अपलोडर में अपलोड निर्देशिका को कैसे बदलें

लेकिन मैं चाहता हूँ कि जब मैं अपने प्लगइन अपलोड करने वाले से फाइल को अपलोड उन फ़ाइलों को मैं गूगल से खोज इसलिए Wordpress कस्टम uploads फ़ोल्डर के अंदर एक नया फ़ोल्डर में अपलोड किया जाना चाहिए और इस कोड को पाया: अब

<?php 
    function upload_dir($dirs)          
{                
     $dirs['subdir'] = '/my-uploads';     
     $dirs['path'] = $dirs['basedir'] . '/my-uploads'; 
     $dirs['url'] = $dirs['baseurl'] . '/my-uploads'; 

     return $dirs;           
}                

add_filter('upload_dir', 'upload_dir');      

    ?> 

सभी फाइलें जो कि अपलोड किए गए हैं (पोस्ट, पेज इत्यादि) भी उस प्लगइन फ़ोल्डर में संग्रहीत हैं। अपलोड करने से पहले कोड

मैं चाहता हूँ कि केवल उन फ़ाइलों जो मेरे प्लगइन अपलोड करने वाले से अपलोड किए गए हैं my-folder में बचाया जाना चाहिए, और फ़ाइलों के बाकी हिस्सों में वर्डप्रेस डिफ़ॉल्ट uploads फ़ोल्डर को बचाया जाना चाहिए ...

उत्तर

6

ठीक है, उपयोग

add_filter('upload_dir', 'upload_dir'); 

फिर अपने अपलोड करने के बाद कोड, का उपयोग करें:

remove_filter('upload_dir', 'upload_dir'); 

इस तरह, फिल्टर केवल के लिए काम करता आपकी प्लगइन अपलोड और अन्य स्थानों पर नहीं।

+0

ऐसा करने से, यह डिफ़ॉल्ट अपलोड में फिर से फ़ाइलों की बचत है प्लगइन फ़ोल्डर में नहीं फ़ोल्डर ... –

+0

आप अपने कोड का एक अंश पोस्ट कर सकते हैं? सामान्य रूप से क्या काम करना चाहिए: add_filter, wp_handle_upload, remove_filter। –

+0

wp_handle_upload से आपका क्या मतलब है? –

2

आपको सादे PHP का उपयोग कर फ़ाइल प्रसंस्करण को संभालने की आवश्यकता हो सकती है। जब आप संसाधित इस प्रयास करें:

$uploaddir = '/path/to/plugin/uploads/'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 

if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
    echo 'success!'; 
else 
    echo 'fail!'; 

और डिबग करने के लिए print_r($_FILES); का उपयोग करें।

हालांकि बहुत सावधान रहें - आप संभावित रूप से सुरक्षा जोखिम बना रहे हैं। उस पर अधिक जानकारी के लिए Secure PHP File Upload Script देखें।

2

इसे .htaccess सेटिंग्स के साथ करना पड़ सकता है। .htaccess फ़ाइल सीमा के रूप में बनाता है कि आप क्या कर सकते हैं। या यह आपकी फाइल के बाहर कुछ और सेटिंग हो सकती है। क्या आपने इसका परीक्षण करने के लिए 1 से अधिक सर्वर पर इसे चलाने का प्रयास किया है?

2

यहां एक काम कर रहे solution है।

add_filter('upload_dir', 'my_upload_dir'); 
$upload = wp_upload_dir(); 
remove_filter('upload_dir', 'my_upload_dir'); 

funcion my_upload_dir($upload) { 
    $upload['subdir'] = '/sub-dir-to-use' . $upload['subdir']; 
    $upload['path']  = $upload['basedir'] . $upload['subdir']; 
    $upload['url']  = $upload['baseurl'] . $upload['subdir']; 
    return $upload; 
} 
संबंधित मुद्दे