WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is it possible to redirect users to an admin page if they access another admin page?

For example if they a user ever hits "all pages" /wp-admin/edit.php?post_type=page

they would get redirected to "add New page" /wp-admin/post-new.php?post_type=page

share|improve this question
up vote 7 down vote accepted
/**
 * Redirect admin pages.
 *
 * Redirect specific admin page to another specific admin page.
 *
 * @author Michael Ecklund
 * @access public
 *
 * @return void
 */
public 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', 'http'), 301);
        exit;
    }
}

Fire the above function on the hook admin_init.

add_action('admin_init', array($this, 'disallowed_admin_pages'));

share|improve this answer

Michael's solution appears to be intended for use inside a class, so for anyone wanting a standalone function which will work directly in functions.php, the example below includes a redirect from customize.php to a theme options page and the one from Michael's original function.

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');
share|improve this answer

Yes this is possible by adding an action to admin_init, at that point you could check the request uri to see if it matches /wp-admin/edit.php?post_type=page and if it does issue a redirect to the add posts page: /wp-admin/post-new.php?post_type=page.

Also the Plugin API and the action reference pages on the WordPress codex go into more detail about actions and how they work.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.