web-dev-qa-db-fra.com

Comment afficher par défaut uniquement les articles/pages publiés dans la zone d'administration?

En l'état, WordPress affiche par défaut all les pages/publications dans la liste des pages/publications de la zone d'administration, quel que soit leur statut de publication.

J'ai beaucoup de brouillons, mais d'habitude, je suis beaucoup plus intéressé par l'édition des pages/articles publiés. Par conséquent, obtenir uniquement pour les afficher nécessite un autre clic et un rechargement complet.

Existe-t-il un moyen de configurer WordPress pour qu’à l’origine, il n’affiche que les articles/pages publiés, ce qui vous permet de cliquer sur "Tout" ou "Brouillon" si vous le souhaitez?

9
yudayuda

Je ne sais pas s'il existe un autre moyen, mais la manipulation de la variable globale $submenu peut permettre de résoudre ce problème.

Ce qui suit est juste un hack manuel (je ne connais aucun hook) et peut échouer lors de la configuration de sous-menus non standard. Le type de poste régulier a une adresse unique et le reste des types en a une autre, d'où deux foreachs.

add_action( 'admin_menu', 'default_published_wpse_91299' );

function default_published_wpse_91299() 
{
    global $submenu;

    // POSTS
    foreach( $submenu['edit.php'] as $key => $value )
    {
        if( in_array( 'edit.php', $value ) )
        {
            $submenu['edit.php'][ $key ][2] = 'edit.php?post_status=publish&post_type=post';
        }
    }

    // OTHER POST TYPES
    $cpt = array( 'page', 'portfolio' ); // <--- remove or adapt the portfolio post type
    foreach( $cpt as $pt )
    {
        foreach( $submenu[ 'edit.php?post_type=' . $pt ] as $key => $value )
        {
            if( in_array( 'edit.php?post_type=' . $pt, $value ) )
            {
                $submenu[ 'edit.php?post_type='.$pt ][ $key ][2] = 'edit.php?post_status=publish&post_type=' . $pt;
            }
        }   
    }
}
5
brasofilo

Pour afficher les pages publiées par défaut sur le lien des pages, il vous suffit de coller cet extrait de code dans votre fichier functions.php. Vous pouvez ensuite visiter l'onglet "Tous" pour voir la liste complète des pages.

// change page link to display published pages only
function wcs_change_admin_page_link() {
    global $submenu;
    $submenu['edit.php?post_type=page'][5][2] = 'edit.php?post_type=page&post_status=publish';
}
add_action( 'admin_menu', 'wcs_change_admin_page_link' );

Si vous souhaitez obtenir le même résultat pour post link dans le tableau de bord admin, utilisez plutôt l'extrait de code suivant.

// change post link to display published posts only
function wcs_change_admin_post_link() {
    global $submenu;
    $submenu['edit.php'][5][2] = 'edit.php?post_status=publish';
}
add_action( 'admin_menu', 'wcs_change_admin_post_link' );

Référence: http://www.wpcodesnippet.com/wordpress-admin/change-pages-link-display-published-pages/

2
bojan