Admin-Seitenumleitung

17

Ist es möglich, Benutzer auf eine Admin-Seite umzuleiten, wenn sie auf eine andere Admin-Seite zugreifen?

Zum Beispiel, wenn sie ein Benutzer jemals "alle Seiten" trifft /wp-admin/edit.php?post_type=page

Sie würden weitergeleitet werden, um "Neue Seite hinzufügen" /wp-admin/post-new.php?post_type=page

Shae
quelle

Antworten:

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

    }

}

Feuern Sie die obige Funktion am Haken ab admin_init.

add_action( 'admin_init', 'disallowed_admin_pages' );

Alternative Syntax:

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

Michaels Lösung scheint für die Verwendung in einer Klasse gedacht zu sein. Für alle, die eine eigenständige Funktion benötigen, die direkt in functions.php funktioniert, enthält das folgende Beispiel eine Weiterleitung von customize.php zu einer Theme-Optionsseite und die von Michaels Originalfunktion .

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');
user3245709
quelle
0

Ja , das ist möglich durch eine Zugabe von Aktion zu admin_init, an diesem Punkt , um die Anfrage uri überprüfen könnte , um zu sehen , ob sie paßt /wp-admin/edit.php?post_type=pageund wenn es eine Umleitung auf die Add - Beiträgen Seite herausgibt : /wp-admin/post-new.php?post_type=page.

Auch die Plugin-API und die Aktionsreferenzseiten im WordPress-Codex gehen detaillierter auf Aktionen und deren Funktionsweise ein.

ampt
quelle