私は現在次のような作業機能を持っています。
add_action('add_attachment', 'create_post_from_image');
function create_post_from_image($id) {
if (wp_attachment_is_image($id)) {
$image = get_post($id);
// get image height/width for auto inserting the image later
@list($width, $height) = getimagesize(get_attached_file($id));
$post = array(
// Set image title as post title
'post_title' => $image->post_title,
// Set post to draft for details
'post_status' => 'draft',
// "Fake" WordPress insert image code
'post_content' => '<a href="'.$image->guid.'"><img class="alignnone size-full wp-image-'.$image->ID.'" src="'.$image->guid.'" alt="'.$image->post_name.'" width="'.$width.'" height="'.$height.'" /></a>'
);
$postid = wp_insert_post($post);
if ($postid) {
// Set image as post featured image
set_post_thumbnail($postid, $image->ID);
// Attach image to the post
wp_update_post(array(
'ID' => $id,
'post_parent' => $postid
)
);
}
}
}
この機能が行うことは、本質的に、Media Libraryにアップロードされた各画像の投稿を作成し、アップロードされた画像を投稿コンテンツに埋め込むことです。それはそれから私がレビューして公開するためのドラフトとしてそれを設定します。
アップロードされた各画像について、埋め込まれたEXIFデータを取得して画像がキャプチャされた日付/時刻を取得し、それをWP投稿の日付/時刻として自動的に設定する創造された?
PHPはこの目的のための関数を持っています: exif_read_data
この画像 を使ってテストしました。
あなたの目的のためにこのコードを試してください。
add_action( 'add_attachment', 'create_post_from_image' );
function create_post_from_image( $id ) {
if ( wp_attachment_is_image( $id ) ) {
$image = get_post( $id );
// Get image height/width for auto inserting the image later
@list( $width, $height ) = getimagesize( get_attached_file( $id ) );
$post = array(
// Set image title as post title
'post_title' => $image->post_title,
// Set post to draft for details
'post_status' => 'draft',
// "Fake" WordPress insert image code
'post_content' => '<a href="' . $image->guid .
'"><img class="alignnone size-full wp-image-' . $image->ID .
'" src="' . $image->guid . '" alt="' . $image->post_name .
'" width="' . $width . '" height="' . $height . '" /></a>'
);
// Take image date
if ( function_exists( 'exif_read_data' ) ) {
$exif = exif_read_data( $image->guid );
if ( ! empty( $exif['DateTime'] ) ) {
//var_dump( $exif['DateTime'] );
$post['post_date'] = $exif['DateTime'];
}
}
$postid = wp_insert_post( $post );
if ( $postid ) {
// Set image as post featured image
set_post_thumbnail( $postid, $image->ID );
// Attach image to the post
wp_update_post( array(
'ID' => $id,
'post_parent' => $postid
) );
}
}
}