Home > Net >  How to attach the pdf file in the custom post type in the WordPress?
How to attach the pdf file in the custom post type in the WordPress?

Time:12-16

I am using WordPress. I have created a custom post type. Now I have to add the file upload option so that the admin can upload the pdf.

I have tried some code and I am getting the output and it's correct.

enter image description here

Now, My issue is when I upload the pdf and click on the publish button then it's not uploading. I am not getting any errors. I am using the below code.

function add_pdfcustom_meta_boxes() {  
    add_meta_box('wp_custom_attachment', 'Guideline Pdf Upload', 'wp_custom_attachment', 'guideline', 'normal', 'default');  
}
add_action('add_meta_boxes', 'add_pdfcustom_meta_boxes');  

function wp_custom_attachment() {  
    wp_nonce_field( basename( __FILE__ ), 'wp_custom_attachment_nonce');
    $html = '<p >';
    // $html .= 'Upload your PDF here.';
    $html .= '</p>';
    $html .= '<input type="file" id="wp_custom_attachment" name="wp_custom_attachment" value="" size="25">';
    echo $html;
}

function save_pdfcustom_meta_data($id) {
     /* --- security verification --- */
    if(!wp_verify_nonce($_POST['wp_custom_attachment_nonce'], plugin_basename(__FILE__))) {
      return $id;
    } // end if
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
      return $id;
    } // end if
     if('page' == $_POST['post_type']) {
      if(!current_user_can('edit_page', $id)) {
        return $id;
      } // end if
    } else {
        if(!current_user_can('edit_page', $id)) {
            return $id;
        } // end if
    }
   /* - end security verification - */
// Make sure the file array isn't empty
    if(!empty($_FILES['wp_custom_attachment']['name'])) {
         
        // Setup the array of supported file types. In this case, it's just PDF.
        $supported_types = array('application/pdf');
         
        // Get the file type of the upload
        $arr_file_type = wp_check_filetype(basename($_FILES['wp_custom_attachment']['name']));
        $uploaded_type = $arr_file_type['type'];
         
        // Check if the type is supported. If not, throw an error.
        if(in_array($uploaded_type, $supported_types)) {
 
            // Use the WordPress API to upload the file
            $upload = wp_upload_bits($_FILES['wp_custom_attachment']['name'], null, file_get_contents($_FILES['wp_custom_attachment']['tmp_name']));
     
            if(isset($upload['error']) && $upload['error'] != 0) {
                wp_die('There was an error uploading your file. The error is: ' . $upload['error']);
            } else {
                add_post_meta($id, 'wp_custom_attachment', $upload);
                update_post_meta($id, 'wp_custom_attachment', $upload);     
            } // end if/else
 
        } else {
            wp_die("The file type that you've uploaded is not a PDF.");
        } // end if/else
         
    } // end if


 
}
add_action('save_post', 'save_pdfcustom_meta_data');

function update_edit_form() {
    echo ' enctype="multipart/form-data"';
} // end update_edit_form
add_action('post_edit_form_tag', 'update_edit_form');

I am trying from this link and this link

CodePudding user response:

To see if there is attached file to your post edit the following function

function wp_custom_attachment() {
 
    wp_nonce_field(plugin_basename(__FILE__), 'wp_custom_attachment_nonce');
    $file = get_post_meta(get_the_ID(), 'wp_custom_attachment', true); 
    if($file['url']):
        $html .= 'Current file attached <a href="'.$file['url'].'" target="_blank">Preview file</a>'; 
    endif;
    $html .= '<p >';
        $html .= 'Upload your PDF here.';
    $html .= '</p>';
    $html .= '<input type="file" id="wp_custom_attachment" name="wp_custom_attachment" value="" size="25" />';
     
    echo $html;
 
} // end wp_custom_attachment

I would recommend using ACF for custom fields. There is no point to reinvent the wheel.

Please note that those files are not registered in your Media library so you have to manualy delete files from your uploads folder.

  • Related