Intereting Posts
Список сообщений из определенной категории с использованием SQL Query на удаленном db Удалить атрибут типа из тегов сценариев и стиля, добавленных WordPress Использовать заголовок страницы в плагине Параметр Ajax и WP_Query / tax_query Отображать только дочерние термины определенного родительского термина пользовательской таксономии для каждого пользовательского сообщения Простой URL страницы переписывается с помощью add_rewrite_rule () Как вывести изображение или значок для выбранного флажка в специальном сообщении настраиваемый сортируемый столбец Как отображать две категории блога в виде отдельных разделов на одной странице? Загрузка файлов PDF из интерфейсного Сообщения WordPress по дате / день? Что происходит, когда wp_cron деактивируется в WordPress? Исключить текущую должность при получении связанной должности в пользовательском типе сообщений и таксономии Создание отдельных отдельных страниц Отключить учетную запись администратора для отправки комментариев

Прикрепить файл PDF к пользовательскому типу сообщения

Я пытаюсь прикрепить файл pdf к пользовательскому типу сообщения.
Я нашел этот фрагмент на wpsnipp.com.
Код делает трюк, но только для сообщений.
У меня есть пользовательский тип сообщения с именем «events», и я не могу заставить его работать.

add_action("admin_init", "pdf_init"); add_action('save_post', 'save_pdf_link'); function pdf_init(){ add_meta_box("my-pdf", "PDF Document", "pdf_link", "post", "normal", "low"); } function pdf_link(){ global $post; $custom = get_post_custom($post->ID); $link = $custom["link"][0]; $count = 0; echo '<div class="link_header">'; $query_pdf_args = array( 'post_type' => 'attachment', 'post_mime_type' =>'application/pdf', 'post_status' => 'inherit', 'posts_per_page' => -1, ); $query_pdf = new WP_Query( $query_pdf_args ); $pdf = array(); echo '<select name="link">'; echo '<option class="pdf_select">SELECT pdf FILE</option>'; foreach ( $query_pdf->posts as $file) { if($link == $pdf[]= $file->guid){ echo '<option value="'.$pdf[]= $file->guid.'" selected="true">'.$pdf[]= $file->guid.'</option>'; }else{ echo '<option value="'.$pdf[]= $file->guid.'">'.$pdf[]= $file->guid.'</option>'; } $count++; } echo '</select><br /></div>'; echo '<p>Selecting a pdf file from the above list to attach to this post.</p>'; echo '<div class="pdf_count"><span>Files:</span> <b>'.$count.'</b></div>'; } function save_pdf_link(){ global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; } update_post_meta($post->ID, "link", $_POST["link"]); } add_action( 'admin_head', 'pdf_css' ); function pdf_css() { echo '<style type="text/css"> .pdf_select{ font-weight:bold; background:#e5e5e5; } .pdf_count{ font-size:9px; color:#0066ff; text-transform:uppercase; background:#f3f3f3; border-top:solid 1px #e5e5e5; padding:6px 6px 6px 12px; margin:0px -6px -8px -6px; -moz-border-radius:0px 0px 6px 6px; -webkit-border-radius:0px 0px 6px 6px; border-radius:0px 0px 6px 6px; } .pdf_count span{color:#666;} </style>'; } function pdf_file_url(){ global $wp_query; $custom = get_post_custom($wp_query->post->ID); echo $custom['link'][0]; } 

И для отображения ссылки в теме:

 <? pdf_file_url(); ?> 

Я изменил тип сообщения с «пост» на «события», и мета-окно появится на странице «События».
Все идет нормально.
Он действительно сохраняет PDF в первый раз. А также отображает правильную ссылку.
Но если я попытаюсь изменить PDF, это не спасет его. Он снова отображает первый.

Solutions Collecting From Web of "Прикрепить файл PDF к пользовательскому типу сообщения"

Вот это мой код, который я использовал на своем сайте WordPress в пользовательском типе сообщений для добавления PDF-сообщения в сообщение, и его работа для меня пытается изменить его и использовать. Надеюсь, это поможет

 function add_custom_meta_boxes() { add_meta_box('wp_custom_attachment', 'Hotel Brochure', 'wp_custom_attachment', 'hotel_post', 'normal', 'high'); } add_action('add_meta_boxes', 'add_custom_meta_boxes'); function wp_custom_attachment() { wp_nonce_field(plugin_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; } add_action('save_post', 'save_custom_meta_data'); function save_custom_meta_data($id) { if(!empty($_FILES['wp_custom_attachment']['name'])) { $supported_types = array('application/pdf'); $arr_file_type = wp_check_filetype(basename($_FILES['wp_custom_attachment']['name'])); $uploaded_type = $arr_file_type['type']; if(in_array($uploaded_type, $supported_types)) { $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 { update_post_meta($id, 'wp_custom_attachment', $upload); } } else { wp_die("The file type that you've uploaded is not a PDF."); } } } function update_edit_form() { echo ' enctype="multipart/form-data"'; } add_action('post_edit_form_tag', 'update_edit_form'); 

Чтобы получить PDF-файл

 $hotel_brochure = get_post_meta( $post_id, 'wpcf-brochure', true ); $hotel_brochure['url'] 

Я получил эту работу вчера вечером, используя вышеприведенный код (и дополнительный комментарий), и есть несколько вещей, которые я хотел бы добавить здесь. Во-первых, в разделе «Получить файл PDF» «wpcf-brochure» следует изменить на «wp_custom_attachment». Затем, чтобы ответить на окончательный вопрос от OP, чтобы он появился в конце, вот техника, которую я использовал. Перед строкой, которая говорит «echo $ html;» в functions.php, добавьте:

 $filearray = get_post_meta( get_the_ID(), 'wp_custom_attachment', true ); $this_file = $filearray['url']; if($this_file != ""){ $html .= '<div>Current file:<br>"' . $this_file . '"</div>'; }