skip to Main Content

How to Use AJAX in WordPress: Step-by-Step

How to Use AJAX in WordPress: Step-by-Step

Overview

AJAX (Asynchronous JavaScript and XML) lets you update parts of a web page without reloading. This makes your site faster and more interactive. Let’s dive into how to implement AJAX in WordPress.


Implement AJAX In WordPress

Set Up Your WordPress Environment

  1. Choose a Theme: Use a theme that supports custom scripts.
  2. Create a Child Theme: This prevents your changes from being lost during updates.

Create a JavaScript File

  1. Create a New File: Name it custom-ajax.js.
  2. Add Your JavaScript Code: This code will handle the AJAX request
jQuery(document).ready(function($) {
    $('#your-button-id').click(function() {
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'my_custom_action',
                data: 'Your data here'
            },
            success: function(response) {
                $('#result').html(response);
            }
        });
    });
});

Enqueue Your JavaScript File

Open functions.php and Add the Following Code :This file is in your theme or child theme folder.

    function my_enqueue_scripts() {
        wp_enqueue_script('custom-ajax', get_stylesheet_directory_uri() . '/custom-ajax.js', array('jquery'), null, true);
        wp_localize_script('custom-ajax', 'ajaxurl', admin_url('admin-ajax.php'));
    }
    add_action('wp_enqueue_scripts', 'my_enqueue_scripts');
    
    

    Create the AJAX Handler

    Add This Code to functions.php:

    function my_custom_action() {
        // Process your data here
        $data = $_POST['data'];
        
        // Return a response
        echo 'Your response: ' . $data;
        wp_die(); // Required to terminate and return a proper response
    }
    add_action('wp_ajax_my_custom_action', 'my_custom_action');
    add_action('wp_ajax_nopriv_my_custom_action', 'my_custom_action');
    
    

    Create the HTML Structure

    Add This HTML to Your Page or Post:

      <button id="your-button-id">Click Me</button>
      <div id="result"></div>
      

      Live Search Feature With AJAX

      Create the JavaScript File custom-ajax.js

      Add the following code for a live search feature:

      jQuery(document).ready(function($) {
          $('#search-input').keyup(function() {
              var query = $(this).val();
              $.ajax({
                  url: ajaxurl,
                  type: 'POST',
                  data: {
                      action: 'live_search',
                      search: query
                  },
                  success: function(response) {
                      $('#search-results').html(response);
                  }
              });
          });
      });
      
      

      Enqueue Your Script

      Include the same wp_enqueue_script function from the previous example.

      Create the AJAX Handler in functions.php

      function live_search() {
          global $wpdb;
          $search = $_POST['search'];
          $results = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_title LIKE '%$search%' AND post_status='publish'");
      
          if ($results) {
              foreach ($results as $post) {
                  echo '<p>' . esc_html($post->post_title) . '</p>';
              }
          } else {
              echo 'No results found.';
          }
          wp_die();
      }
      add_action('wp_ajax_live_search', 'live_search');
      add_action('wp_ajax_nopriv_live_search', 'live_search');
      
      


        Create HTML for Search Input

        <input type="text" id="search-input" placeholder="Search...">
        <div id="search-results"></div>
        
        

        Submit a Form Without Reloading With AJAX

        Add to custom-ajax.js:

        jQuery(document).ready(function($) {
            $('#contact-form').submit(function(e) {
                e.preventDefault(); // Prevent the form from submitting normally
                $.ajax({
                    url: ajaxurl,
                    type: 'POST',
                    data: $(this).serialize(),
                    success: function(response) {
                        $('#form-message').html(response);
                    }
                });
            });
        });
        
        

        Form HTML Structure

        <form id="contact-form">
            <input type="text" name="name" placeholder="Your Name" required>
            <input type="email" name="email" placeholder="Your Email" required>
            <textarea name="message" placeholder="Your Message" required></textarea>
            <button type="submit">Send Message</button>
        </form>
        <div id="form-message"></div>
        
        

        Create the Form HandlerAdd to functions.php:

        function handle_contact_form() {
            $name = sanitize_text_field($_POST['name']);
            $email = sanitize_email($_POST['email']);
            $message = sanitize_textarea_field($_POST['message']);
        
            // You can send an email or save the data to the database here
        
            echo 'Thank you for your message, ' . $name . '!';
            wp_die();
        }
        add_action('wp_ajax_handle_contact_form', 'handle_contact_form');
        add_action('wp_ajax_nopriv_handle_contact_form', 'handle_contact_form');
        
        

        Load More Posts With AJAX

        Implementing Ajax Load More Pagination Without Plugin – Click here

        Implement a Custom WooCommerce Product Filter by Categories with AJAX – Click Here


        FAQ

        What is AJAX?

        AJAX stands for Asynchronous JavaScript and XML. It allows web pages to be updated asynchronously by exchanging small amounts of data with the server behind the scenes.

        Why use AJAX in WordPress?

        Using AJAX improves user experience by allowing content updates without reloading the entire page. This leads to faster and more interactive applications.

        How do I debug AJAX requests?

        You can use browser developer tools to monitor network requests and console logs to troubleshoot issues with AJAX functionality.

        What is AJAX Load More Pagination?

        AJAX Load More pagination allows users to load additional content (like posts) without refreshing the page. This keeps users engaged and improves site performance.


        I’m a WordPress developer with 10+ years of experience in WooCommerce and custom plugins. I combine technical expertise with design flair to help you create standout, user-friendly websites. Let’s transform your digital presence!

        This Post Has 0 Comments

        Leave a Reply

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

        Back To Top
        Search