PAGE TOP


メディア関連画面の項目を非表示にする

2016年12月14日Wordpress

メディア関連のそれぞれの項目の非表示をしようと思います。やり方としては、display:noneで非表示にしています。またメディアといっても、管理画面のメディアライブラリ、エディタからメディアへの追加、関数から出力するメディアボタンがあり、それに対応したアクションフックもあります。フックが異なれば、適用範囲が変わるのでこのあたりは注意が必要です。下記に簡潔にまとめましたが、ひょっとしたら表記の間違い・抜け項目があるかもしれませんが、基本は、タグや属性よりdisplay:noneで非表示にしているだけなので、応用して修正してください。

まずは、管理画面のメニューの[メディアの]メディアライブラリより、左にある詳細を全て消す場合は、下記のように、class=”attachment-info” を指定すれば、非表示にすることができます。

//functions.php
add_action( 'admin_print_styles', 'hide_media_menu' );
function hide_media_menu() {
 echo '<style>
 .attachment-details div[class="attachment-info"]
{ display: none; }</style>';
}

ただ、これだと、必要なものまで非表示にしてしまっているかもしれないので、細かく、表示・非表示したい場合については、その項目のタグや属性を確認して、下記のように必要に応じて消してみてください。

//for example
add_action( 'admin_print_styles', 'hide_media_menu_01' );
function hide_media_menu_01() {
 echo '<style>
 .attachment-details div[class="filename"],
 .attachment-details div[class="uploaded"],
 .attachment-details div[class="file-size"],
 .attachment-details div[class="dimensions"],
 .attachment-details div[class="compat-meta"],

.attachment-details label[data-setting="url"],
.attachment-details label[data-setting="title"],
.attachment-details label[data-setting="caption"],
.attachment-details label[data-setting="alt"],
.attachment-details label[data-setting="description"],

 .attachment-details span[class="name"],
 .attachment-details span[class="value"],
 .attachment-details div[class="actions"],
 .attachment-details button[class="button-link delete-attachment"]
{ display: none; }</style>';
}

次に、投稿画面の「メディアを追加」の項目の非表示です。こちらも同様に下記のようになります。こちらの場合は、do_action( ‘print_media_templates’ )を利用します。このアクションフックは、メディア機能全てに適用されるので、個人的には、このフックだけ知っていればよいと思っています。

add_action( 'print_media_templates', 'hide_media_menu_02' );
function hide_media_menu_02() {
 echo '<style>
 .media-menu a[class="media-menu-item"],
 .media-menu a[class="media-menu-item hidden"],
 .attachment-details h2,
 .attachment-details div[class="thumbnail thumbnail-image"],
 .attachment-details div[class="filename"],
 .attachment-details div[class="uploaded"],
 .attachment-details div[class="file-size"],
 .attachment-details div[class="dimensions"],
 .attachment-details a[class="edit-attachment"],

.attachment-details label[data-setting="url"],
.attachment-details label[data-setting="title"],
.attachment-details label[data-setting="caption"],
.attachment-details label[data-setting="alt"],
.attachment-details label[data-setting="description"],

.attachment-details button[class="button-link delete-attachment"],

.attachment-display-settings h2,
.attachment-display-settings span,
.attachment-display-settings select[data-setting="align"],
.attachment-display-settings select[class="link-to"],
.attachment-display-settings select[class="size"]
{ display: none; }</style>';
}

また、そのほかには、wp_enqueue_media()関数によって設置した、メディアアップローダーの項目非表示に関しては、do_action( ‘wp_enqueue_media’ ) を使います。

add_action( 'wp_enqueue_media', 'hide_media_menu_03' );
function hide_media_menu_03() {
 echo '<style>
.attachment-details h2,
.attachment-details div[class="thumbnail thumbnail-image"],
.attachment-details div[class="filename"],
.attachment-details div[class="uploaded"],
.attachment-details div[class="file-size"],
.attachment-details div[class="dimensions"],
.attachment-details a[class="edit-attachment"],
.attachment-details button[class="button-link delete-attachment"],
.attachment-details label[data-setting="url"],
.attachment-details label[data-setting="title"],
.attachment-details label[data-setting="caption"],
.attachment-details label[data-setting="alt"],
.attachment-details label[data-setting="description"]
{ display: none; }</style>';
}

これらのメディア関連の画面はどれも似ていますので、当初は同一のものと勘違いしており、同一のフックでいけるのかと思っていましたが、全てに適用できるアクションフックは、上記でも紹介しましたが、do_action( ‘print_media_templates’ )です(他にもあるかもしれませんが)。なので、ここにまとめて、書くのがベストかと思われます。ただ、全てに適用されるため、3つの画面、それぞれで表記を変えたい場合は、URLなどより条件分岐で、そのページなら表示・表示のような設定をする必要があります。