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