web-dev-qa-db-fra.com

Masquer les anciennes pièces jointes de la médiathèque wp

J'essaie de limiter les fichiers affichés dans la bibliothèque contextuelle de wordpress media (à partir de wp_editor).

Actuellement, tous les fichiers que j'ai téléchargés sur mon site sont affichés dans la bibliothèque, mais j'aimerais limiter ce que les utilisateurs voient aux seuls fichiers téléchargés au cours des 24 dernières heures.

Il est possible de limiter la médiathèque par auteur en utilisant le code suivant. Cependant, je ne sais même pas par où commencer pour limiter la fenêtre contextuelle de la bibliothèque multimédia aux fichiers téléchargés au cours des dernières 24 heures.

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;
}
4
ameeromar

Vous pouvez ajuster la requête pièce jointe dans la fenêtre contextuelle de la bibliothèque multimédia, via le filtre ajax_query_attachments_args.

Voici deux exemples de PHP 5.4+:

Exemple 1:

Afficher uniquement les pièces jointes téléchargées au cours des dernières 24 heures:

/**
 * 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;
} );

Exemple n ° 2:

Afficher uniquement les pièces jointes téléchargées au cours des dernières 24 heures par l'utilisateur actuel:

/**
 * 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;
} );
5
birgire

Ajoutez le filtre "ajax_query_attachments_args" de cette manière et les variables d'URL sont envoyées à la classe WP_Query.

le défaut est d'envoyer

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"
}

Ici vous pouvez modifier à votre convenance

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;
}  
2
Salem Terrano