PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Saturday, January 8, 2022

[FIXED] How to attach the pdf file in the custom post type in the WordPress?

 January 08, 2022     custom-post-type, pdf, post, wordpress     No comments   

Issue

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 class="description">';
    // $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


Solution

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 class="description">';
        $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.



Answered By - Martin Mirchev
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing