web-dev-qa-db-ja.com

アップロードされたすべての画像にデフォルトのキャプションを定義する方法はありますか

この答えのタイトルが言うように、私は私のWordPressでアップロードされたすべての画像にデフォルトのキャプションを定義したいのですが...このようなことをする方法はありますか?

3
Miriam de Paula

まだ文書化されていませんが、おそらくattachment_fields_to_saveフィルタをフックしてデフォルトのキャプションをそこに挿入することができます。

コーデックスから

attachment_fields_to_save
データベースに保存する前に、添付ファイルに関連付けられているフィールドに適用されます。 media_upload_form_handler関数で呼び出されます。フィルタ関数引数:投稿属性の配列、フォームから送信された変更を含む添付ファイル項目の配列

これは wp-admin/includes/media.php で定義されています。

// TESTED :)
function wpse300512_image_attachment_fields_to_save($post, $attachment) {
if ( substr($post['post_mime_type'], 0, 5) == 'image' ) {
    if ( '' === trim( $post['post_title'] ) ) {
        $post['post_title'] = preg_replace('/\.\w+$/', '', basename($post['guid']));
        $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.');
    }
    // captions are saved as the post_excerpt, so we check for it before overwriting
    if ( '' === trim( $post['post_excerpt'] ) ) {
        $post['post_excerpt'] = 'default caption';
    }
}

return $post;
}

add_filter('attachment_fields_to_save', 'wpse300512_image_attachment_fields_to_save', 10, 2);

UPDATE:テストに成功しましたが、そのまま動作します。 functions.phpにドロップするだけです。

3
moraleida