Verwenden Sie einen separaten Upload-Ordner für den Upload von benutzerdefinierten Postanhängen

Also, ich versuche, einen Weg zu finden, zwei separate Upload-Ordner zu verwenden, der Standard wp-content/uploads für allgemeine Medien-Uploads, und ein anderer sagen wp-content/custom für einen bestimmten Typ von Anlagen (PDF-Dateien an einen bestimmten post_type angehängt).

Es ist wichtig, sie sowohl organisatorisch als auch datensicher getrennt zu halten, da die PDF-Dateien etwas sensible Daten enthalten, die nur von zwei benutzerdefinierten Benutzerrollen zugänglich sein sollten, während allgemeine Medien allgemein gültig sind.

Es ist mir etwas peinlich, dir den Code zu zeigen, den ich habe, weil es mies ist, aber hier geht es:

  function custom_post_type_metabox_save_function($post_id) { global $post; // Verify auto-save, nonces, permissions and so on then: update_post_meta($post_id, "meta_key1", $_POST["value1"]); update_post_meta($post_id, "meta_key2", $_POST["value2"]); // this is where it gets uply. I change the 'upload_path' to my desired one for this post type update_option('upload_path','wp-content/custom-upload-dir'); // then upload the file to it wp_upload_bits($_FILES["pdfexame"]["name"], null, file_get_contents($_FILES["pdfexame"]["tmp_name"])); // and then change it back to default... :$ update_option('upload_path',''); } add_action('save_post','custom_post_type_metabox_save_function'); 

Ich würde wirklich lieber nur 2 Upload-Dateien für dieses Post-Format und eine andere für den Rest haben. Gibt es einen saubereren Weg?

Solutions Collecting From Web of "Verwenden Sie einen separaten Upload-Ordner für den Upload von benutzerdefinierten Postanhängen"

Ich habe es getriggers, indem ich das wp-Upload-System komplett umgangen habe, so sieht es jetzt aus:

 /* * Define new upload paths */ $uploadfolder = WP_CONTENT_DIR . '/exames'; // Determine the server path to upload files $uploadurl = content_url() . '/exames/'; // Determine the absolute url to upload files define(RM_UPLOADDIR, $uploadfolder); define(RM_UPLOADURL, $uploadurl); function custom_post_type_metabox_save_function($post_id) { global $post; // Verify auto-save, nonces, permissions and so on then: update_post_meta($post_id, "meta_key1", $_POST["value1"]); update_post_meta($post_id, "meta_key2", $_POST["value2"]); update_post_meta($post_id, "meta_key3", $_POST["value3"]); $destination = RM_UPLOADDIR; // Determine the path to upload files $filename = $_FILES["file"]["name"]; // Get the uploaded file name // This separates the extension from the rest of the file name $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; $newname = time() . rand(); // Create a new name $filepath = $destination . '/' . $newname.'.'.$exts; // Get the complete file path $filename = $newname.'.'.$exts; // Get the new name with the extension // Now, if the upload was successful we save a post meta with the filename, if not, save nothing if (move_uploaded_file($_FILES["pdfexame"]["tmp_name"], $filepath)) { update_post_meta($post_id, "rm_martins_exame_url", $filename); } } add_action('save_post','custom_post_type_metabox_save_function'); 

Es ist viel weniger hässlich als das, was ich vorher hatte, aber es wäre immer noch viel besser, wenn dies mit dem upload_dir Filter gemacht werden upload_dir .