如何从媒体库中删除列表视图?

时间:2015-03-16 作者:Simone.p

我想从媒体库中删除列表模式,让用户只看到网格模式。我知道这是一个

$modes = array( \'grid\', \'list\' );
在中upload.php

但我不想修改核心。

1 个回复
SO网友:Adam

这有点黑客,但并不要求您编辑核心文件,正如您所知,您永远不应该这样做。

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

});
或者,移除?mode=list 从URL查询参数,您可以:

使用JavaScript修改search 在上找到属性windlow.location wp_redirect() 通过检查$_GET 针对mode 查询变量数组键(recommended).

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 钩子,生成所需的结果。

结束