Je dois masquer/supprimer les numéros derrière l'écran d'édition dans le backend.
Tous (30) | Publié (22) | Ébauche (5) | En attente (2) | Corbeille (1)
Comme je gère un blog multi-auteurs et que chaque auteur a juste accès à ses propres messages, je ne souhaite pas publier les informations cumulées de tous les auteurs.
Avec le code suivant, les vues sont complètement non définies, mais je ne veux pas supprimer toute la fonctionnalité:
function remove__views( $views ) {
unset($views['all']);
unset($views['publish']);
unset($views['trash']);
return $views;
}
add_action( 'views_edit-post', 'remove_views' );
add_action( 'views_edit-movie', 'remove_views' );
Quelqu'un a-t-il une idée? Comment masquer/supprimer les numéros derrière l'écran d'édition ou, au mieux, ne montrer que les numéros associés à chaque auteur?
Malheureusement, il n’existe pas de "jolie" façon de le faire (c’est-à-dire sans utiliser le remplacement de chaîne ou la réécriture d’un grand nombre de fonctionnalités). Donc, en recourant à preg_replace
...
Nous aurons besoin de filtrer les liens, et il est bon de voir que vous avez déjà trouvé les filtres appropriés! En parcourant les vues et en utilisant une expression régulière, nous pouvons supprimer l'élément contenant le nombre de publications. En implémentant ceci pour les posts, vous aurez besoin de quelque chose comme ceci:
add_filter( 'views_edit-post', 'wpse149143_edit_posts_views' );
function wpse149143_edit_posts_views( $views ) {
foreach ( $views as $index => $view ) {
$views[ $index ] = preg_replace( '/ <span class="count">\([0-9]+\)<\/span>/', '', $view );
}
return $views;
}
Nous avons eu le même problème aujourd'hui. Une jolie solution n'est peut-être pas évidente, mais pas impossible non plus.
Voici le code que nous utilisons pour afficher uniquement les comptes liés à chaque auteur. Les utilisateurs ayant le droit de modifier les publications d'autres utilisateurs verront toujours le décompte complet.
add_filter('wp_count_posts', 'wpse149143_wp_count_posts', 10, 3);
/**
* Modify returned post counts by status for the current post type.
* Only retrieve counts of own items for users without rights to 'edit_others_posts'
*
* @since 26 June 2014
* @version 26 June 2014
* @author W. van Dam
*
* @notes Based on wp_count_posts (wp-includes/posts.php)
*
* @param object $counts An object containing the current post_type's post
* counts by status.
* @param string $type Post type.
* @param string $perm The permission to determine if the posts are 'readable'
* by the current user.
*
* @return object Number of posts for each status
*/
function wpse149143_wp_count_posts( $counts, $type, $perm ) {
global $wpdb;
// We only want to modify the counts shown in admin and depending on $perm being 'readable'
if ( ! is_admin() || 'readable' !== $perm ) {
return $counts;
}
// Only modify the counts if the user is not allowed to edit the posts of others
$post_type_object = get_post_type_object($type);
if (current_user_can( $post_type_object->cap->edit_others_posts ) ) {
return $counts;
}
$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s AND (post_author = %d) GROUP BY post_status";
$results = (array) $wpdb->get_results( $wpdb->prepare( $query, $type, get_current_user_id() ), ARRAY_A );
$counts = array_fill_keys( get_post_stati(), 0 );
foreach ( $results as $row ) {
$counts[ $row['post_status'] ] = $row['num_posts'];
}
return (object) $counts;
}
Je pense que le moyen le plus simple serait de simplement les cacher avec CSS, vous pouvez essayer quelque chose comme ceci:
add_action( 'admin_head', 'wpse145565_hide_post_count' );
function wpse145565_hide_post_count() {
$css = '<style>';
$css .= '.subsubsub a .count { display: none; }';
$css .= '</style>';
echo $css;
}
Fondamentalement, la fonction ajoute une balise de style à l’en-tête de la section admin qui définit la propriété display
du décompte de texte en none
.