Przekierowanie strony administratora


18

Czy można przekierować użytkowników na stronę administratora, jeśli uzyskają oni dostęp do innej strony administratora?

Na przykład, jeśli użytkownik kliknie „wszystkie strony” /wp-admin/edit.php?post_type=page

zostaną przekierowani na „dodaj nową stronę” /wp-admin/post-new.php?post_type=page

Odpowiedzi:


24
/**
 * Redirect admin pages.
 *
 * Redirect specific admin page to another specific admin page.
 *
 * @return void
 * @author Michael Ecklund
 *
 */
function disallowed_admin_pages() {

    global $pagenow;

    # Check current admin page.
    if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {

        wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
        exit;

    }

}

Uruchom powyższą funkcję na haku admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Alternatywna składnia:

/**
 * Redirect admin pages.
 *
 * Redirect specific admin page to another specific admin page.
 *
 * @return void
 * @author Michael Ecklund
 *
 */
add_action( 'admin_init', function () {

    global $pagenow;

    # Check current admin page.
    if ( $pagenow == 'edit.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] == 'page' ) {

        wp_redirect( admin_url( '/post-new.php?post_type=page' ) );
        exit;

    }

} );

3

Rozwiązanie Michaela wydaje się być przeznaczone do użytku wewnątrz klasy, więc dla każdego, kto chce autonomicznej funkcji, która będzie działała bezpośrednio w functions.php, poniższy przykład zawiera przekierowanie z customize.php na stronę opcji motywu i tę z oryginalnej funkcji Michaela .

function admin_redirects() {
    global $pagenow;

    /* Redirect Customizer to Theme options */
    if($pagenow == 'customize.php'){
        wp_redirect(admin_url('/admin.php?page=theme_options', 'http'), 301);
        exit;
    }

    /* OP's redirect from /wp-admin/edit.php?post_type=page */
    if($pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == 'page'){
        wp_redirect(admin_url('/post-new.php?post_type=page', 'http'), 301);
        exit;
    }
}

add_action('admin_init', 'admin_redirects');

0

Tak, jest to możliwe poprzez dodanie działań do admin_init, w tym momencie można sprawdzić URI żądania, aby zobaczyć, czy pasuje /wp-admin/edit.php?post_type=page, a jeśli to robi wydać przekierowanie do strony użytkownika Dodaj: /wp-admin/post-new.php?post_type=page.

Również interfejs API wtyczek i strony referencyjne akcji w kodzie WordPress zawierają bardziej szczegółowe informacje na temat akcji i ich działania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.