Raz Ohad made an article about faster ajax requests in WordPress, which I’m currently using in my plugins and let me tell you, it’s working very well.
Do you want to cut your ajax requests response time to half? Here is what you do:
Create a php file
Yep. Create a php file for the handler in your template/plugin anywhere you want. Then put this in there:
<?php //mimic the actuall admin-ajax define('DOING_AJAX', true); if (!isset( $_POST['action'])) die('-1'); //make sure you update this line //to the relative location of the wp-load.php require_once('../../../wp-load.php'); //Typical headers header('Content-Type: text/html'); send_nosniff_header(); //Disable caching header('Cache-Control: no-cache'); header('Pragma: no-cache'); $action = esc_attr(trim($_POST['action'])); //A bit of security $allowed_actions = array( 'custom_action1', 'custom_action2' ); //For logged in users add_action('SOMETEXT_custom_action1', 'handler_fun1'); add_action('SOMETEXT_custom_action2', 'handler_fun1'); //For guests add_action('SOMETEXT_nopriv_custom_action2', 'handler_fun2'); add_action('SOMETEXT_nopriv_custom_action1', 'handler_fun1'); if(in_array($action, $allowed_actions)) { if(is_user_logged_in()) do_action('SOMETEXT_'.$action); else do_action('SOMETEXT_nopriv_'.$action); } else { die('-1'); } ?>
As you can see it’s simple. There is a minimal security check as well. Don’t forget to edit the “SOMETEXT” for something unique.
Using the custom handler
For better access you should localize the script that you are planning to make the ajax requests to this file:
wp_localize_script( 'some-script', 'some_variable', array( 'customajax' => plugins_url('my_custom_ajax.php' , __FILE__) ) );
Then, all you need to do is make the ajax request:
var data = { action: 'custom_action1', something: 'something' }; var x = $.post(some_variable.customajax, data, function(response) { console.log(response); });
That’s it!
Comments 2
Thank you very much. It makes my plugin faster
can you make a video explaining the process?