wp_insert_postで記事投稿添付ファイルつき

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
  }
?>