사용자 지정 게시물 첨부 업로드를 위해 별도의 업로드 폴더를 사용하십시오.


9

따라서 두 가지 별도의 업로드 폴더를 사용하는 방법을 찾으려고합니다. wp-content/uploads일반 미디어 업로드 의 기본 폴더 이고 다른 하나는 wp-content/custom특정 유형의 첨부 파일 (하나의 특정 post_type에 첨부 된 PDF 파일)입니다.

PDF 파일은 두 가지 사용자 정의 사용자 역할로만 액세스 할 수있는 다소 민감한 데이터를 보유하지만 일반 미디어는 일반적으로 일반적이므로 조직과 데이터 보안을 위해 분리 된 상태를 유지하는 것이 중요합니다.

작동하는 코드를 보여주기가 조금 당혹 스럽습니다.

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

나는 실제로이 포스트 형식과 나머지를 위해 2 개의 업로드 파일을 가지고 싶습니다. 더 깔끔한 방법이 있습니까?

답변:


4

wp 업로드 시스템을 완전히 우회하여 문제를 해결 했으므로 다음과 같이 보입니다.

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

내가 전에했던 것보다 덜 추악하지만 upload_dir필터를 사용하여 수행 할 수 있다면 여전히 훨씬 나을 것 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.