I'm trying to submit form using:

`admin_post` && `admin_post_nopriv` 

actions. This is a shortcode for users search:

add_shortcode( 'search_users', 'search_users' );
function search_users( $atts ,$content = null ) {
<div class="search-box-main-container">
    <form method="POST" id="sul-searchform" action="<?php echo home_url() . '/wp-admin/admin-post.php' ?>" class="search-form">
        <div class="search-box-container">
            <input type="text" class="search-box" name="search" id="sul-s"/>

        <div class="submit-container">
            <input type="hidden" name="action" value="search_users_action">
            <input type="submit" class="search-box-submit" name="submit" id="sul-searchsubmit"

$output = ob_get_contents();
return  $output;

And these are the actions:

add_action( 'admin_post_search_users_action', 'list_users' );
add_action( 'admin_post_nopriv_search_users_action', 'list_users' );
function list_users() {
$search = (isset($_POST['search'])) ?sanitize_text_field($_POST['search']) : false;
wp_redirect( home_url() . '/user-listing?search=' . $search );

They work only for admin users and unauthenticated users. With authenticated non-admin user, the actions haven't been called. It just redirects to the home page!

Is there another action to handle authenticated non-admin users?

  • No, admin_post can be used for all authenticated users, and admin_post_nopriv for all non-authenticated users. But depending on what you want to do, there are other relevant hooks like init and template_redirect which you can use to process submitted form data, redirect the user, etc. – Sally CJ Sep 12 '19 at 12:33
  • @SallyCJ So, why doesn't it work with non-admin authenticated users? Is there additional thing to do? – Rowayda Khayri Sep 12 '19 at 13:20
  • What's your code? And how does it not works? – Sally CJ Sep 12 '19 at 13:25
  • @SallyCJ I've added the code. – Rowayda Khayri Sep 12 '19 at 15:02
  • 1
    Thanks, @SallyCJ . I found that the issue was due to another plugin on the site. – Rowayda Khayri Sep 12 '19 at 19:35

I found that the issue was due to another plugin on my site. After deactivating it, everything works well. So, the action admin_post is used for all authenticated users( admins and non-admins ).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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