से फ़ाइलों को हटाएं हमने एक कस्टम पोस्ट प्रकार बनाया है जो हमारे क्लाइंट को मानक वर्डप्रेस अपलोड फ़ोल्डर (wp-content/upload-assets) के बाहर किसी फ़ोल्डर में फ़ाइलों को अपलोड करने की अनुमति देता है। इन फ़ाइलों को मानक WP-content/अपलोड फ़ोल्डर से अलग से नियंत्रित किया जा करने के लिए कर रहे हैं और यही कारण है कि हम WP-config.php मेंवर्डप्रेस wp_delete_attachment को पूर्व-निर्धारित कस्टम फ़ोल्डर
define('UPLOADS', 'mycustomfolder');
का उपयोग नहीं कर सकते।
इसके बजाय हम इस का उपयोग अस्थायी रूप से अपलोड बदलने के लिए फ़ोल्डर wp-content/अपलोड-संपत्ति:
add_filter('upload_dir', 'my_upload_dir');
$uploaded_file = wp_handle_upload($_FILES['xxxx_image'], $upload_overrides);
remove_filter('upload_dir', 'my_upload_dir');
हम इस प्रयोग कर रहे हैं कि किसी विशेष पोस्ट से सभी संलग्नक दूर करने के लिए:
add_filter('upload_dir', 'my_upload_dir');
$attachments = get_posts(array(
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'any',
'post_parent' => $pid
));
foreach ($attachments as $attachment) {
if (false === wp_delete_attachment($attachment->ID, true)) {
echo 'Attachment could not be deleted.';
}
}
remove_filter('upload_dir', 'my_upload_dir');
wp_delete_attachment को डिस्क से सभी संबंधित फ़ाइलों को भी हटा देना चाहिए, लेकिन यह काम नहीं करता है क्योंकि हमारी फ़ाइलें हमारे कस्टम फ़ोल्डर (wp-content/upload-assets) में हैं।
function my_upload_dir($upload) {
$upload['subdir'] = '';
$upload['basedir'] = WP_CONTENT_DIR;
$upload['baseurl'] = WP_CONTENT_URL;
$upload['path'] = $upload['basedir'] . '/upload-assets';
$upload['url'] = $upload['baseurl'] . '/upload-assets';
return $upload;
}
हम अपने कस्टम WP-सामग्री/अपलोड-संपत्ति फ़ोल्डर में फ़ाइलों को हटा दें wp_delete_attachment करते हैं:
यहाँ हमारे my_upload_dir समारोह के लिए कोड है?
पहले संलग्नक guid पर एक नजर है अगर वे कस्टम फ़ोल्डर में वास्तव में कर रहे हैं। – Erevald
@Ervald - हाँ। निश्चित रूप से कस्टम फ़ोल्डर में! –
क्या आपके पास उस फ़ोल्डर के लिए डिफ़ॉल्ट रूप से सही अनुमतियां हैं? – Erevald