Скрыть старые вложения из медиа-библиотеки wp
Я пытаюсь ограничить файлы, отображаемые во всплывающем окне медиатеки wordpress (из wp_editor).
В настоящее время каждый файл, который я когда-либо загружал на свой сайт, отображается в библиотеке, но я хотел бы ограничить то, что видят пользователи, только файлами, загруженными за последние 24 часа.
Можно ограничить медиатеку автором, используя следующий код; однако я даже не уверен, с чего начать, чтобы ограничить всплывающее окно медиатеки файлы, загруженные за последние 24 часа.
add_action('pre_get_posts','users_own_attachments');
function users_own_attachments( $wp_query_obj ) {
global $current_user, $pagenow;
if( !is_a( $current_user, 'WP_User') )
return;
if( !in_array( $pagenow, array( 'upload.php', 'admin-ajax.php' ) )
return;
if( !current_user_can('delete_pages') )
$wp_query_obj->set('author', $current_user->ID );
return;
}
2 answers
Вы можете настроить запрос вложения во всплывающем окне библиотеки мультимедиа с помощью фильтра ajax_query_attachments_args
.
Вот два примера PHP 5.4+:
Пример #1:
Показывать только вложения, загруженные в течение последних 24 часов:
/**
* Media Library popup
* - Only display attachments uploaded during the last 24 hours:
*/
add_filter( 'ajax_query_attachments_args', function( $args )
{
$args['date_query'] = [['after' => '24 hours ago', 'inclusive' => true ]];
return $args;
} );
Пример #2:
Показывать только вложения, загруженные текущим пользователем в течение последних 24 часов:
/**
* Media Library popup
* - Only display attachments uploaded during the last 24 hours by the current user:
*/
add_filter( 'ajax_query_attachments_args', function( $args )
{
$args['author'] = get_current_user_id();
$args['date_query'] = [['after' => '24 hours ago', 'inclusive' => true ]];
return $args;
} );
Добавьте фильтр "ajax_query_attachments_args" таким образом, и переменные URL-адреса будут отправлены в класс WP_Query
По умолчанию используется отправка
array(7) {
["orderby"]=> string(4) "date"
["order"]=> string(4) "DESC"
["posts_per_page"]=> string(2) "40"
["paged"]=> string(1) "1"
["post_type"]=> string(10) "attachment"
["post_status"]=> string(15) "inherit,private"
}
Здесь вы можете изменить по своему вкусу
add_filter( 'ajax_query_attachments_args', 'my_ajax_query_attachments_args', 1, 10 );
function my_ajax_query_attachments_args($query) {
$query['date_query'] = array(
array(
'before' => "-1 day",
'inclusive' => true,
),
);
var_dump($query);
return $query;
}