Better ajax handler for WordPress – Super fast ajax

Ernest Marcinko jQuery, Tutorials, Wordpress 1 Comment

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!

Ernest Marcinko

WordPress developer, javascript enthusiast, photoshop clicker and the founder of wp-dreams.com

Stay connected

Related Posts
Filter by
Post Page
Blog Commercial Plugins Wordpress Tutorials jQuery Wordpress Free Plugins Hosting
Sort by

Ajax Search Pro Nulled

2015-01-15 09:50:16
admin

18

Using Ajax in your WordPress plugins

2014-04-14 13:23:29
admin

18

Ajax Search Pro for WordPress

2012-11-06 19:27:10
admin

18

Saving space automatically – Beginners guide to Digital Ocean

After a while, you will notice an exponential growth of used space, without even copying anything to it. How
2016-05-06 09:24:05
admin

8

Comments 1

Leave a Reply

Your email address will not be published. Required fields are marked *