Jak wyświetlać domyślnie tylko opublikowane posty / strony w obszarze administratora?

9

W tej chwili WordPress wyświetla domyślnie wszystkie strony / posty na liście stron / postów w obszarze administracyjnym, bez względu na ich status publikacji.

Mam dużo szkiców, ale zazwyczaj jestem znacznie bardziej zainteresowany edycją opublikowanych stron / postów, dlatego tylko wyświetlanie ich wymaga kolejnego kliknięcia i pełnego przeładowania.

Czy istnieje sposób, aby WordPress początkowo wyświetlał tylko opublikowane posty / strony, umożliwiając kliknięcie „Wszystkie” lub „Szkic”, jeśli później chcesz?

yudayuda
źródło
Ktoś? Niedawno powiedziano mi, że jeśli chcesz szybko uzyskać odpowiedzi na WordPress - StackExchange to miejsce, do którego należy się udać ... Każda odpowiedź byłaby mile widziana - dzięki.
yudayuda

Odpowiedzi:

5

Nie jestem pewien, czy istnieje inny sposób, ale manipulowanie zmienną globalną $submenumoże sprawić, że zadziała.

Poniżej znajduje się tylko ręczny hack (nie znam żadnego haka) i może się nie powieść w niestandardowych konfiguracjach podmenu. Zwykły typ posta ma unikalny adres, a pozostałe typy mają inny, stąd dwa 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;
            }
        }   
    }
}
brasofilo
źródło
2

Aby domyślnie wyświetlać opublikowane strony na łączu stron, po prostu wklej ten fragment kodu w pliku functions.php. Następnie możesz przejść do zakładki „Wszystkie”, aby zobaczyć pełną listę stron.

// 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' );

Jeśli chcesz osiągnąć to samo dla linku do postu w panelu administracyjnym, użyj zamiast tego następującego fragmentu kodu.

// 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' );

Odniesienie: http://www.wpcodesnippet.com/wordpress-admin/change-pages-link-display-published-pages/

Bojan
źródło