画像をアップロードするとき、Wordpressはwp_read_image_metadata
を介してjpgから説明メタデータを読み取り、post_content
またはmedia_handle_upload
を介して添付ファイルを追加するときにそれをmedia_handle_sideload
フィールドに挿入します。
しかし、Wordpressでエディタに画像を追加すると、post_excerpt
を介してimage_media_send_to_editor
フィールドのキャプションを探します。
私が欲しいのは、私たちの画像がアップロードされるとき、画像メタ記述のためにWordPressによって埋められるフィールドがエディタに画像を配置するときにキャプションのために使われるものであるという点で、ほんの少しの連続性です。
プロセスを一致させるためにこれらの機能のいずれかにフックできる方法を誰かが提案できますか?どちらの方法で修正しても構いませんが、post_excerpt
は「小さい」フィールドなので、データベースのオーバーヘッドが少なくなると考える傾向があります。
任意の助けは大歓迎です。
ありがとう。
これはあなたのために働くのだろうか?
add_action( 'add_attachment', function( $attachment_id ){
$a = get_post( $attachment_id );
if ( is_object( $a ) && 'image' === substr( $a->post_mime_type, 0, 5 ) )
wp_insert_attachment( array( 'ID' => $a->ID, 'post_excerpt' => $a->post_content ) );
});
または少ないクエリで:
add_action( 'add_attachment', function( $attachment_id ){
global $wpdb;
if( ! empty( $attachment_id ) )
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts
SET post_excerpt = post_content
WHERE ID = %d LIMIT 1", $attachment_id ) );
});
説明(post_content
)はキャプション(post_excerpt
)にコピーされます。添付ファイルが挿入(追加)された直後にadd_attachment
が起動されたとき。