web-dev-qa-db-ja.com

Media Uploader/Galleryからフィールドを削除する

私は答えを探しています。

私は単にアップローダとギャラリービューから代替テキスト、キャプション、説明とリンクURLフィールドを削除したいです。

このMedia-thingy以外のものはすべて削除できるようです。

手助けをしてくれてありがとう:)

4
Jonas Thomsen

あなたはフィルタを介してこれを行うことができます。 functions.phpに以下を追加してください。この方法であなた自身のフィールドを追加することもできます...

// edit fields in media upload area
add_filter('attachment_fields_to_edit', 'remove_media_upload_fields', 10000, 2);
function remove_media_upload_fields( $form_fields, $post ) {

    // remove unnecessary fields
    unset( $form_fields['image-size'] );
    unset( $form_fields['post_excerpt'] );
    unset( $form_fields['post_content'] );
    unset( $form_fields['url'] );
    unset( $form_fields['image_url'] );
    unset( $form_fields['align'] );

    return $form_fields;
}

上記の例では必要以上に削除されていますが、$form_fields変数に対してprint_r()を実行すると、追加/削除できるものがわかります。

3
sanchothefat

残念ながら、メディアライブラリをアップグレードしたときにWP3.5でこれはかなり変更されたようです。そのフィルタの$ form_fieldsパラメータには、デフォルトはもう含まれていません。私がこれまでに見つけた唯一の解決策は、バッファリングを使用してビューからマークアップを強制的に削除することです。

これは非常に壊れやすいです - WordPressコアを変更するとこれが壊れる可能性があります

function wpse45562_remove_media_fields( $buffer ) {
    // remove the 'caption' block
    $buffer = preg_replace( '~<p>\s*<label\s*for="attachment_caption">.*?</p>~ims', '', $buffer );
    // remove the 'alt text' block
    $buffer = preg_replace( '~<p>\s*<label\s*for="attachment_alt">.*?</p>~ims', '', $buffer );

    // remove the 'description' box (and label separately)
    $buffer = preg_replace( '~<div\s*id="wp-attachment_content-editor.*?</div>~ims', '',   $buffer );
    $buffer = preg_replace( '~<label\s*for="content">.*?</label>~ims', '', $buffer );

    return $buffer;
}

function wpse45562_media_strip_buffer_start() { ob_start("wpse45562_remove_media_fields");  }
function wpse45562_media_strip_buffer_end() { ob_end_flush(); }

add_action('admin_head', 'wpse45562_media_strip_buffer_start', 10, 1);
add_action('admin_footer', 'wpse45562_media_strip_buffer_end', 10, 1);
1
funwhilelost