web-dev-qa-db-ja.com

メディアライブラリからリストビューを削除する方法?

メディアライブラリからリストモードを削除して、ユーザーにグリッドモードのみを表示させたいのですが。私はそれが問題だと思った

$modes = array( 'grid', 'list' );

upload.php

しかし、私はコアを変更したくありません。

6
Simone.p

これは少し厄介ですが、コアファイルを編集する必要はありません。ご存知のとおり、絶対に編集しないでください。

add_action('admin_init', function() {
    $_GET['mode'] = 'grid';
}, 100);

これは常にモードをグリッド表示に強制します。

しないこと、

  • リストビューアイコンは削除されません。
  • uRLのクエリ引数は変更されません

リストビューアイコンを削除するには、次のようなことをします。

add_action('admin_head', function() {

    ?>

    <style type="text/css">
        .view-switch .view-list {
            display: none;
        }
    <style>

    <?php

});

あるいは、URLから?mode=listクエリ引数を削除するには、次のようにします。

  • javaScriptを使用して、windlow.locationにあるsearchプロパティを変更します。
  • modeクエリ変数配列キー (推奨) について$_GET super globalを調べて、wp_redirect()を使用してユーザーサーバー側をリダイレクトします。

たとえば、最初のスニペットを次のように書き直すことができます。

add_action('admin_init', function() {

    if ( isset( $_GET['mode'] ) && $_GET['mode'] !== 'grid' ) {
        wp_redirect(admin_url('upload.php?mode=grid'));
        exit;
    } else {
        //required by upload.php, handle the case if user just navigates to... 
        //http://www.example.com/wp-admin/upload.php (with no mode query argument)
        $_GET['mode'] = 'grid';
    }

}, 100);

あるいは、elseブロックを必要としない代替方法

add_action('admin_init', function() {

    if ( strpos(admin_url('upload.php'), $_SERVER['REQUEST_URI']) !== false 
         || (isset($_GET['mode']) && $_GET['mode'] === 'list') ) {
        wp_redirect(admin_url('upload.php?mode=grid'));
        exit;
    } 

}, 100);

...上記のスニペットでは、次のURLのどちらを使用しても問題ありません。

...は常にリダイレクトされます

admin_headフックにCSSをインジェクトすることでリストビューアイコンを隠すことと組み合わせることで、望み通りの結果が得られます。

9
userabuser