web-dev-qa-db-ja.com

Wordpressでメディアのキャプション/説明の矛盾を変更しますか?

画像をアップロードするとき、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は「小さい」フィールドなので、データベースのオーバーヘッドが少なくなると考える傾向があります。

任意の助けは大歓迎です。

ありがとう。

3
edeneye

これはあなたのために働くのだろうか?

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が起動されたとき。

1
birgire