Pengalihan Halaman Admin

17

Apakah mungkin untuk mengarahkan pengguna ke halaman admin jika mereka mengakses halaman admin lain?

Misalnya jika mereka pengguna pernah mengklik "semua halaman" /wp-admin/edit.php?post_type=page

mereka akan diarahkan ke "tambah halaman Baru" /wp-admin/post-new.php?post_type=page

Shae
sumber

Jawaban:

23
/**
 * 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;

    }

}

Nyalakan fungsi di atas pada kait admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Sintaks alternatif:

/**
 * 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;

    }

} );
Michael Ecklund
sumber
3

Solusi Michael tampaknya dimaksudkan untuk digunakan di dalam kelas, jadi bagi siapa pun yang menginginkan fungsi mandiri yang akan bekerja secara langsung di functions.php, contoh di bawah ini termasuk redirect dari customize.php ke halaman opsi tema dan yang dari fungsi asli Michael .

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');
pengguna3245709
sumber
0

Ya ini mungkin dengan menambahkan tindakan untuk admin_init, pada saat itu Anda bisa memeriksa uri permintaan untuk melihat apakah itu cocok/wp-admin/edit.php?post_type=page dan jika tidak mengeluarkan redirect ke halaman posting add: /wp-admin/post-new.php?post_type=page.

Juga API Plugin dan halaman referensi tindakan pada kodeks WordPress menjelaskan lebih detail tentang tindakan dan cara kerjanya.

ampt
sumber