0

I'm trying to make a shortcut in navigation that will take user to one certain post. So far I'm using

add_action('admin_menu', 'add_custom_menu_position');

function add_custom_menu_position() {
add_menu_page('FeaturedJobs', 'Featured Jobs', 'edit_posts', 'edit.php?post=706&action=edit',18); 
}

The item does show up in the admin menu, but every time I try to use it, it inserts admin? as a part of the link and I get You do not have sufficient permissions to access this page. error.

The final link looks like this: http://website_url/wp-admin/admin.php?page=post.php?post=706&action=edit

I know that I have enough capabilities to edit it, because I'm on an admin account and also once I use a regular edit link (http://website_url/wp-admin/post.php?post=706&action=edit), it works fine. I'm rather sure the problem is there because the link I'm trying to reach is wrong, but I can't find a way to link to it in any other way.

I'll be grateful for any hints, E.

3 Answers 3

0

When you are adding the menu slug as edit.php?post=706&action=edit, it is adding in the url after admin.php considering it as a new page in admin dashboard (general behaviour of add_menu_page())

So, you should give a fully qualified url instead. I think, admin_url() should help.

Try adding

admin_url('post.php?post=706&action=edit')

Or

admin_url('edit.php?post=706&action=edit')

instead of

edit.php?post=706&action=edit

as menu slug.

1
0
add_action( 'admin_menu', 'register_custom_menu_link' );

function register_custom_menu_link(){
    add_menu_page('FeaturedJobs', 'Featured Jobs', 'edit_posts', 'featured_jobs', '__return_null', 'dashicons-external', 18);
}

add_action( 'admin_init', 'redirect' );
function redirect() {
    if(!empty($_GET['page']) && $_GET['page'] == 'featured_jobs') {
        // Your post id
        $post_id = 706;
        wp_redirect(wp_specialchars_decode(get_edit_post_link($post_id)));
    }
}
0

I was running into the same issue but was able to accomplish this with the help of wp_redirect and this post.

My solution ended up looking something like this:

add_action('admin_menu', 'add_custom_menu_position');

function add_custom_menu_position() {
$hook = add_menu_page('FeaturedJobs', 'Featured Jobs', 'edit_posts', 'featured-jobs',18); 
add_action('load-' . $hook, function () {
            wp_redirect(admin_url('post.php?post=706&action=edit'));
        });
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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