Chuyển hướng trang quản trị


17

Có thể chuyển hướng người dùng đến một trang quản trị nếu họ truy cập một trang quản trị khác?

Ví dụ: nếu người dùng đã từng truy cập "tất cả các trang" /wp-admin/edit.php?post_type=page

họ sẽ được chuyển hướng đến "thêm trang mới" /wp-admin/post-new.php?post_type=page

Câu trả lời:


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;

    }

}

Bắn các chức năng trên vào móc admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Cú pháp thay thế:

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

Giải pháp của Michael dường như được dự định để sử dụng bên trong một lớp, vì vậy, đối với bất kỳ ai muốn một chức năng độc lập sẽ hoạt động trực tiếp trong hàm.php, ví dụ dưới đây bao gồm chuyển hướng từ custom.php đến trang tùy chọn chủ đề và một chức năng từ chức năng ban đầu của 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');

0

Có, điều này là có thể bằng cách thêm một hành động vào admin_init, tại thời điểm đó, bạn có thể kiểm tra uri yêu cầu để xem nó có khớp /wp-admin/edit.php?post_type=pagehay không và liệu nó có chuyển hướng đến trang thêm bài viết không : /wp-admin/post-new.php?post_type=page.

Ngoài ra API Plugin và các trang tham chiếu hành động trên codex WordPress đi sâu vào chi tiết hơn về các hành động và cách chúng hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.