wp-admin/admin-ajax.php 400 (Bad Request) plugin

You’re only hooking your AJAX response inside wp_head():

function rp_add_header() {
    if (is_single() || is_page()) { 
        // etc.

        add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' ); // ajax for logged in users
        add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' ); // ajax for not logged in users


    }
}
add_action('wp_head','rp_add_header',1);

But wp_head doesn’t run on admin-ajax.php, so your callbacks will never be hooked. You need to move these hooks outside of that function:

function rp_add_header() {
    // etc.
}
add_action( 'wp_head', 'rp_add_header', 1 );

function ajax_action_stuff() {
    // etc.
}
add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' ); // ajax for logged in users
add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' ); // ajax for not logged in users

deneme bonusu veren sitelerbahis casino