This article demonstrates how to use AJAX in WordPress to create a "Read Later" plugin. The plugin adds a link below each post allowing logged-in users to save posts for later reading. A widget then displays these saved posts. The tutorial emphasizes secure coding practices.
Key Concepts:
-
admin-ajax.php
: This core WordPress file handles AJAX requests, ensuring security and compatibility. -
wp_ajax_
hook: Use this hook to register custom functions processing AJAX requests. - Enqueueing Scripts and Styles: Properly register and enqueue JavaScript and CSS using WordPress functions.
- Nonce Verification: Essential for securing AJAX calls against unauthorized access.
- Dynamic UI Updates: AJAX enables smooth, fast content updates without page reloads.
Plugin Functionality:
The "Read Later" plugin performs these actions:
- Adds a "Read Later" link beneath each blog post.
- On click, the post ID is saved to the user's metadata (without page refresh).
- A widget displays the saved posts.
Plugin Development Steps:
-
Directory Structure: Create a plugin folder (
read-me-later
) with subfolders forjs
andcss
, and files:read-me-later.php
,widget.php
,read-me-later.js
,read-me-later.css
. -
read-me-later.php
(Plugin Header & Class): The plugin header identifies it to WordPress. AReadMeLater
class encapsulates plugin functionality. -
Enqueueing Scripts and Styles: The
ReadMeLater
class includes methods to register and enqueue theread-me-later.js
andread-me-later.css
files using WordPress hooks (plugins_loaded
). -
Adding the "Read Me Later" Link: A function (
rml_button
) adds the link to the post content and excerpt, only visible to logged-in users. This uses WordPress filters (the_content
,the_excerpt
). -
Defining the AJAX URL:
wp_localize_script
makes theadmin-ajax.php
URL available to JavaScript. -
JavaScript (
read-me-later.js
): The JavaScript handles the link click, sends the AJAX request toadmin-ajax.php
, and hides the link after a successful save. -
AJAX Action Hook (
wp_ajax_read_me_later
): This hook inread-me-later.php
connects the AJAX request to theread_me_later
function. -
read_me_later
Function: This function saves the post ID to the user's metadata usingupdate_user_meta
. It also retrieves and displays the saved posts usingget_posts
. The function usesdie()
to ensure proper AJAX output. -
Widget (
widget.php
): A custom widget (RML_Widget
) extendsWP_Widget
to display the saved posts. It includes methods for the widget's form, update, and display. -
Securing AJAX Calls: Nonce verification is implemented using
wp_create_nonce
in JavaScript andcheck_ajax_referer
in the PHP function to prevent unauthorized requests.
Conclusion: This tutorial provides a practical example of using AJAX securely and effectively within a WordPress plugin. Remember to adapt and expand upon this foundation to create more complex and feature-rich plugins. The use of WordPress hooks and functions ensures compatibility and maintainability.
The above is the detailed content of How to Use Ajax in WordPress - a Real World Example. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

When managing WordPress projects with Git, you should only include themes, custom plugins, and configuration files in version control; set up .gitignore files to ignore upload directories, caches, and sensitive configurations; use webhooks or CI tools to achieve automatic deployment and pay attention to database processing; use two-branch policies (main/develop) for collaborative development. Doing so can avoid conflicts, ensure security, and improve collaboration and deployment efficiency.

Use WordPress testing environments to ensure the security and compatibility of new features, plug-ins or themes before they are officially launched, and avoid affecting real websites. The steps to build a test environment include: downloading and installing local server software (such as LocalWP, XAMPP), creating a site, setting up a database and administrator account, installing themes and plug-ins for testing; the method of copying a formal website to a test environment is to export the site through the plug-in, import the test environment and replace the domain name; when using it, you should pay attention to not using real user data, regularly cleaning useless data, backing up the test status, resetting the environment in time, and unifying the team configuration to reduce differences.

The key to creating a Gutenberg block is to understand its basic structure and correctly connect front and back end resources. 1. Prepare the development environment: install local WordPress, Node.js and @wordpress/scripts; 2. Use PHP to register blocks and define the editing and display logic of blocks with JavaScript; 3. Build JS files through npm to make changes take effect; 4. Check whether the path and icons are correct when encountering problems or use real-time listening to build to avoid repeated manual compilation. Following these steps, a simple Gutenberg block can be implemented step by step.

In WordPress, when adding a custom article type or modifying the fixed link structure, you need to manually refresh the rewrite rules. At this time, you can call the flush_rewrite_rules() function through the code to implement it. 1. This function can be added to the theme or plug-in activation hook to automatically refresh; 2. Execute only once when necessary, such as adding CPT, taxonomy or modifying the link structure; 3. Avoid frequent calls to avoid affecting performance; 4. In a multi-site environment, refresh each site separately as appropriate; 5. Some hosting environments may restrict the storage of rules. In addition, clicking Save to access the "Settings>Pinned Links" page can also trigger refresh, suitable for non-automated scenarios.

To implement responsive WordPress theme design, first, use HTML5 and mobile-first Meta tags, add viewport settings in header.php to ensure that the mobile terminal is displayed correctly, and organize the layout with HTML5 structure tags; second, use CSS media query to achieve style adaptation under different screen widths, write styles according to the mobile-first principle, and commonly used breakpoints include 480px, 768px and 1024px; third, elastically process pictures and layouts, set max-width:100% for the picture and use Flexbox or Grid layout instead of fixed width; finally, fully test through browser developer tools and real devices, optimize loading performance, and ensure response

TosetupredirectsinWordPressusingthe.htaccessfile,locatethefileinyoursite’srootdirectoryandaddredirectrulesabovethe#BEGINWordPresssection.Forbasic301redirects,usetheformatRedirect301/old-pagehttps://example.com/new-page.Forpattern-basedredirects,enabl

UsingSMTPforWordPressemailsimprovesdeliverabilityandreliabilitycomparedtothedefaultPHPmail()function.1.SMTPauthenticateswithyouremailserver,reducingspamplacement.2.SomehostsdisablePHPmail(),makingSMTPnecessary.3.SetupiseasywithpluginslikeWPMailSMTPby

Tointegratethird-partyAPIsintoWordPress,followthesesteps:1.SelectasuitableAPIandobtaincredentialslikeAPIkeysorOAuthtokensbyregisteringandkeepingthemsecure.2.Choosebetweenpluginsforsimplicityorcustomcodeusingfunctionslikewp_remote_get()forflexibility.
