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 WordPress if ( 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_exists if (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() funcione require_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 } ?>