按作者姓名排序媒体库

时间:2015-04-16 作者:Josh Mountain

当试图按作者姓名对我上传的媒体库进行排序时,WordPress似乎只会按作者ID(http://example.com/wp-admin/upload.php?mode=list&orderby=author&order=desc )

这是预期的行为、bug还是疏忽?按作者ID排序似乎很无用,我更愿意按名字和/或姓氏排序。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

按作者的显示名称排序:

这很可能是出于设计原因,因为wp_posts 表是作者ID。

我们可以加入wp_users 表以获取有关用户的更多信息,然后相应地修改订单。

下面是一个示例,我们可以通过显示名称进行订购:

/**
 * Modify the author sorting of the media library uploads (mode=list), 
 * use \'display_name\' instead of \'post_author\'. 
 *
 * @see http://wordpress.stackexchange.com/a/184501/26350
 */
add_action( \'load-upload.php\', function()
{
    add_filter( \'posts_clauses\', function( $clauses, $q )
    {
        if(    $q->is_main_query()
            && \'list\'   === filter_input( INPUT_GET, \'mode\'    )
            && \'author\' === filter_input( INPUT_GET, \'orderby\' )
        ) {
            global $wpdb;

            // Join part:
            $clauses[\'join\']    .= " LEFT JOIN {$wpdb->users} u 
                ON u.ID = {$wpdb->posts}.post_author ";

            // Orderby part:
            $clauses[\'orderby\'] = str_replace( 
                "{$wpdb->posts}.post_author",
                " u.display_name", 
                $clauses[\'orderby\'] 
            );
        }
        return $clauses;
    }, 10, 2 );
});
首名和末名存储在wp_usermeta 表,因此您需要为此调整SQL查询,但请注意,这些字段都可能为空。另一方面,显示名称始终设置为afaik。

结束

相关推荐

Sortable WYSIWYG editor

我在metabox中有一组可排序的wysiwyg编辑器。不幸的是,每当我拖动一行时,我都会遇到这个错误,我不知道是什么导致了它。Uncaught TypeError: Object [object Object] has no method \'destroy\'这是我的可排序代码:$( \"#repeatable-fieldset-one tbody\" ).sortable({ handle: \'.jQuerySortableIcon\',