Перенаправлення сторінки адміністратора


18

Чи можливо перенаправити користувачів на сторінку адміністратора, якщо вони мають доступ до іншої сторінки адміністратора?

Наприклад, якщо користувач коли-небудь переходить на "всі сторінки" /wp-admin/edit.php?post_type=page

вони будуть перенаправлені на "Додати нову сторінку" /wp-admin/post-new.php?post_type=page

Відповіді:


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;

    }

}

Запустіть вищевказану функцію на гачок admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Черговий синтаксис:

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

Здається, рішення Майкла призначене для використання всередині класу, тому для тих, хто хоче самостійну функцію, яка працюватиме безпосередньо у function.php, приклад нижче включає переспрямування з customize.php на сторінку з параметрами теми та оригінальну функцію від 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

Так , це можливо шляхом додавання дії до admin_init, в цей момент ви можете перевірити запит URI , щоб побачити , якщо він відповідає /wp-admin/edit.php?post_type=pageі якщо він робить видавати перенаправлення на сторінку додавання повідомлень: /wp-admin/post-new.php?post_type=page.

Також API плагінів та довідкові сторінки дій у кодексі WordPress детальніше описують дії та те, як вони працюють.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.