Özel gönderi eki yüklemesi için ayrı bir yükleme klasörü kullanın


9

Yani, wp-content/uploadsgenel medya yüklemeleri için varsayılan bir olmak üzere iki ayrı yükleme klasörü kullanmanın bir yolunu bulmaya çalışıyorum ve bir wp-content/customdiğeri belirli bir ek türü (belirli bir post_type'ye eklenmiş PDF dosyaları) için söylüyor.

PDF dosyaları yalnızca iki özel kullanıcı rolü tarafından erişilebilir olması gereken biraz hassas veriler içereceğinden, hem organizasyon hem de veri güvenliği için onları ayrı tutmak önemlidir.

Berbat olduğu için size çalıştığım kodu göstermek için biraz utanıyorum, ama işte gidiyor:

    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');

Gerçekten sadece bu yükleme biçimi için bir diğeri geri kalanı için 2 yükleme dosyaları olurdu. Bu konuda daha temiz bir yol var mı?

Yanıtlar:


4

Tamamen wp yükleme sistemini atlayarak çözdüm, bu yüzden şimdi böyle görünüyor:

/*
 * 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');

Daha önce sahip olduğumdan daha az çirkin, ama bu upload_dirfiltre kullanılarak yapılabilirse yine de çok daha iyi olurdu .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.