web-dev-qa-db-fra.com

Ajouter un filtre spécial à tous les messages de l'administrateur

J'ai un curseur de messages en vedette sur la page d'accueil de mon site. Il affiche n posts (5 actuellement) de la catégorie featured. Si j'ai 5 messages dans cette catégorie et que j'en publie un 6, le plus ancien des 6 n'apparaît pas dans le curseur ou dans la liste des messages récents. Ma solution actuelle consiste à accéder à Tous les messages> Publié> En vedette, à en choisir une pour la désactiver et poursuivre ma vie.

Je vais prendre des suggestions pour une meilleure solution (corriger le curseur en vedette est probablement une réponse décente), mais ce que je cherche ici, c'est un moyen d'ajouter un lien vers Tous les messages qui affichera tous les articles en vedette publiés.

enter image description here

2
hookedonwinter

Tout d’abord dans votre image, vous pouvez voir que WordPress vous permet de filtrer les articles par catégorie, en dessous de ce que vous avez ajouté à l’image, mais si vous voulez savoir comment ajouter votre propre lien au filtre, vous pouvez utiliser views_edit-post crochet de filtre ex:

add_action('pre_get_posts', 'query_add_filter' );
function query_add_filter( $wp_query ) {
    if( is_admin()) {
        add_filter('views_edit-post', 'Add_My_filter');
    }
}

// add filter
function Add_My_filter($views) {
    global $wp_query;
    unset($views['mine']);
    $my_cat = YOUR-CAT-ID

    $query = array(
        'author'      => $current_user->ID,
        'post_type'   => 'post',
        'post_status' => 'publish',
    'cat'         => $my_cat
    );
    $result = new WP_Query($query);
    $class = ($wp_query->query_vars['cat'] == 'featured') ? ' class="current"' : '';
    $views['publish_f'] = sprintf(__('<a href="%s"'. $class .'>Publish Featured <span class="count">(%d)</span></a>', 'publish featured'),
        admin_url('edit.php?post_status=publish&post_type=post&cat='.$my_cat),
        $result->found_posts);

    return $views;
}

assurez-vous simplement de changer YOUR-CAT-ID avec l'identifiant de catégorie actuel

7
Bainternet