wp_insert_postで投稿してwp_insert_attachmentで添付をつける
取得するのは<?php $url = wp_get_attachment_url( 20 ) ); ?>でよさげ
wp_insert_postで投稿してwp_insert_attachmentで添付をつける
取得するのは<?php $url = wp_get_attachment_url( 20 ) ); ?>でよさげ
<form action="./" method="post" enctype="multipart/form-data"><table><tr><th>タイトル</th><td><input type="text" name="post_title" /></td></tr><th>概要</th><td><textarea name="post_excerpt"></textarea></td></tr><tr><th>説明文</th><td><textarea name="post_content"></textarea></td></tr><tr><th>写真</th><td><input type="file" sise="50" name="pict01" /></td></tr><tr><th>下書きで保存する</th><td><input type="checkbox" name="post_status" value="draft" /></td></tr></table><div class="tacenter"><input type="submit" value="この内容で投稿する" /></div></form><?php// 記事投稿処理$postarr['post_title'] = $_POST['post_title'];$postarr['post_category'] = $_POST['categories'];$postarr['post_excerpt'] = $_POST['post_excerpt'];if($_POST['post_status'] == 'draft' ){$postarr['post_status'] = 'draft';} else {$postarr['post_status'] = 'publish';}$postarr['post_type'] = 'post'; // post, page, attachment$postarr['post_author'] = $user_ID;$post_id = wp_insert_post($postarr);if( $post_id == 0 ){echo '<div style="color:#ff0000">投稿失敗!!</div>';} else {echo '<div style="color:#ff0000">投稿成功しました</div>';}$upload_dir_var = wp_upload_dir(); // obtenemos la ubicación de los archivos subidos en nuestro WordPress$upload_dir = $upload_dir_var['path']; // obtenemos el path absoluto de la carpeta de archivos subidos$filename = basename($_FILES['pict01']['name']); // obtenemos el nombre del archivo subido con el form$filename = trim($filename); // eliminamos posibles espacios antes y después del nombre de archivo$filename = ereg_replace(" ", "-", $filename); // eliminamos posibles espacios intersticiales en el nombre de archivo$typefile = $_FILES['pict01']['type']; // obtenemos el tipo de archivo (JPG, PNG...)$uploaddir = realpath($upload_dir); // nos aseguramos de que el path de la carpeta de archivos subidos es absoluto// esto es importante, si no es absoluto no funcionará$uploadfile = $uploaddir.'/'.$filename; // formamos el nombre definitivo que tendrá el archivo$slugname = preg_replace('/\.[^.]+$/', '', basename($uploadfile)); // este es el nombre que tendrá la imagen en la base de datos de imágenes de WordPressif ( file_exists($uploadfile) ) { // si un archivo con el mismo nombre ya existe se añade un sufijo al nombre$count = "0";while ( file_exists($uploadfile) ) {$count++;if ( $typefile == 'image/jpeg' ) { $exten = 'jpg'; }elseif ( $typefile == 'image/png' ) { $exten = 'png'; }elseif ( $typefile == 'image/gif' ) { $exten = 'gif'; }$uploadfile = $uploaddir.'/'.$slugname.'-'.$count.'.'.$exten;}} // fin if file_existsif (move_uploaded_file($_FILES['pict01']['tmp_name'], $uploadfile)) {// aquí ejecutaremos el código para insertar la imagen en la base de datos// $post_id = '100'; // el identificador del post o página al que queremos asociar la imagen$slugname = preg_replace('/\.[^.]+$/', '', basename($uploadfile)); // tras la reubicación del archivo definimos definitivamente su nombre$attachment = array('post_mime_type' => $typefile, // tipo de archivo'post_title' => $slugname, // el nombre del archivo en la Libreria de medios'post_content' => '', // contenido extra asociado a la imagen'post_status' => 'inherit');$attach_id = wp_insert_attachment( $attachment, $uploadfile, $post_id );// se debe incluir el archivo image.php// para que la función wp_generate_attachment_metadata() funcionerequire_once(ABSPATH . "wp-admin" . '/includes/image.php');$attach_data = wp_generate_attachment_metadata( $attach_id, $uploadfile );wp_update_attachment_metadata( $attach_id, $attach_data );}else {// mensaje de error}?>