The Ajax Load More plugin has become an essential tool for WordPress developers seeking to implement infinite scroll and pagination functionality. Understanding its directory structure is critical for developers who want to customize implementations, create custom repeater templates, or troubleshoot issues effectively. This technical guide explores the plugin’s architecture and shows you how to leverage its organization for better Elementor integration.
What is Ajax Load More and Why Directory Structure Matters
Ajax Load More enables dynamic content loading without page refreshes, creating smooth infinite scroll experiences for blog archives, portfolios, and product listings. For developers working with Elementor Addons and custom implementations, knowing where files reside prevents common mistakes like modifying core files that get overwritten during updates.
The plugin’s modular architecture separates concerns between admin functionality, public-facing features, and optional add-ons. This separation allows developers to extend specific areas without affecting the entire plugin. When integrating with Elementor design widgets, understanding which directories contain template files versus JavaScript handlers becomes essential for creating cohesive user experiences.
Directory structure knowledge also accelerates debugging. When Ajax load more functionality breaks after an update, knowing whether to check JavaScript compilation in /core/src/js/ or repeater templates in /core/repeater/ saves substantial development time.
Root Directory Files and Their Functions
The Ajax Load More root directory contains several critical files that initialize the plugin. The main plugin file, typically ajax-load-more.php, serves as the bootstrap that WordPress recognizes. This file contains plugin header information and initiates the loading sequence for all other components.
You’ll find the README.txt file here, which documents version compatibility, changelog information, and installation instructions. While often overlooked, this file provides valuable context about feature additions and deprecated functions across versions.
Class initialization files in the root establish the plugin’s object-oriented structure. These files define the main plugin class and handle activation, deactivation, and uninstallation hooks. Developers creating custom Elementor functionality extensions often reference these patterns when building complementary plugins.
The /admin/ and /public/ directories branch from root, each containing class files that handle their respective contexts. This separation ensures admin dashboard code doesn’t load on the frontend, optimizing performance for your Elementor site enhancements.
Core Directory Architecture
The /core/ directory houses Ajax Load More’s essential functionality. This folder contains subdirectories for classes, repeaters, scripts, and styles that power the plugin’s primary features. Understanding this centralization helps developers locate specific functionality quickly.
Within /core/classes/, you’ll find PHP files handling query construction, repeater logic, and shortcode processing. The ALM_Query_Builder.php file, for instance, constructs WP_Query parameters based on shortcode attributes. Developers integrating Ajax Load More with custom post types or Elementor widget functionality often reference these classes to understand query parameter handling.
The /core/functions/ directory contains utility functions for common operations like sanitization, validation, and data processing. These functions provide reusable code that maintains consistency throughout the plugin. When building custom WordPress Elementor add-ons that interact with Ajax Load More, leveraging these functions ensures compatibility.
Configuration files for features like lazy loading, SEO optimization, and cache management also reside in /core/. These files contain default settings and option arrays that admin interface components reference. Understanding these defaults helps when creating custom presets or programmatically adjusting plugin behavior.
JavaScript and CSS Asset Organization
Ajax Load More organizes JavaScript assets across multiple directories based on development stage. Source files live in /core/src/js/ where developers can review unminified, commented code. These files use modern JavaScript syntax and include detailed inline documentation explaining functionality.
The compiled production files reside in /core/js/, containing minified versions optimized for frontend delivery. The main ajax-load-more.js file handles core infinite scroll logic, while feature-specific files like ajax-load-more-seo.js and ajax-load-more-filters.js provide modular functionality you can selectively enable.
For developers working with Elementor visual tools, understanding JavaScript file organization matters when debugging conflicts or extending functionality. Custom JavaScript that interacts with Ajax Load More should reference the appropriate compiled files and follow similar naming conventions to maintain consistency.
Stylesheet organization follows a parallel structure. Source SCSS files in /core/src/sass/ compile to production CSS in /core/css/. The main ajax-load-more.css file provides default styling for loading buttons and transitions. Developers creating custom Elementor customization tools often override these styles using higher specificity selectors in their theme or child theme stylesheets.
Repeater Templates Location and Customization

The /core/repeater/ directory stores default repeater templates that define how loaded content displays. These PHP template files receive post data and output HTML markup. Understanding template structure is essential for developers creating custom layouts that match their Elementor design widgets aesthetic.
Default templates like default.php provide basic post markup including title, excerpt, and featured image. More specialized templates handle specific content types or layouts. Developers can reference these templates when creating custom versions that integrate with Elementor productivity extensions.
The plugin checks for custom templates in your theme’s /alm_templates/ directory before using core templates. This override system allows theme-specific customization without modifying core plugin files. When building client sites with Elementor integration plugins, storing custom repeater templates in the theme ensures they persist through plugin updates.
Template files receive the $alm_current variable containing the iteration number and $alm_found_posts with the total post count. These variables enable conditional logic based on position in the load sequence. For example, inserting advertisements or call-to-action elements after every fifth loaded post becomes straightforward with access to $alm_current.
Add-ons and Extensions Folder Structure

Premium add-ons install as separate directories within the main plugin folder. Each add-on like /pro/, /filters/, /cache/, or /paging/ contains its own admin, public, and core subdirectories mirroring the main plugin structure. This modularity allows selective feature activation without bloating core functionality.
The /pro/ add-on directory includes advanced features like custom query parameters and layout presets. Files within this add-on extend the main plugin’s classes using inheritance, demonstrating object-oriented design principles. Developers building Elementor development plugins can study these patterns for extending third-party plugins cleanly.
The /filters/ add-on organizes files that handle dynamic content filtering without page reloads. Its /core/classes/ directory contains taxonomy filter builders and JavaScript handlers that coordinate with the main plugin’s loading mechanism. Understanding this integration is valuable when creating filtered content displays using Elementor site design tools.
Add-on directories contain their own asset subdirectories for CSS and JavaScript specific to their functionality. This separation prevents unnecessary asset loading when add-ons aren’t active, optimizing page performance. Developers should follow similar patterns when extending Ajax Load More with custom functionality.
Language Files and Localization Directory
The /lang/ directory contains translation files for internationalization. The ajax-load-more.pot file serves as the translation template, while .po and .mo files provide actual translations for specific languages. Multilingual site developers working with Elementor widget functionality should ensure custom text strings follow WordPress localization best practices.
Translation files reference text domains declared in the main plugin file. All translatable strings throughout the plugin use the ‘ajax-load-more’ text domain, ensuring consistency. When creating custom templates or extensions that display user-facing text, wrapping strings in appropriate translation functions maintains multilingual compatibility.
The plugin uses WordPress’s standard localization functions like __() and _e(), making custom translations straightforward through plugins like Loco Translate. For developers building comprehensive Elementor add-ons that integrate Ajax Load More, maintaining consistent translation practices ensures professional multilingual implementations.
Admin Interface Files Organization
The /admin/ directory structures all dashboard functionality including settings pages, shortcode builder interfaces, and plugin management tools. The /admin/views/ subdirectory contains template files that render admin screens, separating presentation from logic.
Settings management classes in /admin/classes/ handle option sanitization, validation, and storage. These classes implement WordPress Settings API patterns, providing secure configuration management. Developers creating custom Elementor extension features that require admin interfaces can reference these implementations as examples.
The /admin/js/ and /admin/css/ directories contain assets exclusively for dashboard interfaces. These files handle shortcode builder interactions, settings panel functionality, and admin notices. Keeping admin assets separate from public assets prevents unnecessary loading on frontend pages, improving performance for Elementor visual enhancements.
Admin interface files include extensive inline documentation explaining option interactions and validation rules. This documentation proves valuable when troubleshooting configuration issues or programmatically adjusting plugin settings through custom code.
Public-Facing Components Structure
The /public/ directory contains all frontend-facing functionality. Class files here handle shortcode registration, script enqueueing, and AJAX request processing. The main ALM class file coordinates between various components to deliver seamless infinite scroll experiences.
AJAX handler functions reside in /public/classes/class-alm-ajax.php, processing requests and returning formatted content. Understanding this file’s structure helps developers debug loading issues or customize return data formats. When integrating with Elementor widget guides, knowing how data flows from AJAX requests to template rendering enables more sophisticated implementations.
The shortcode processor parses attributes, validates parameters, and constructs appropriate HTML markup. Developers extending Ajax Load More functionality through custom shortcode attributes should study these validation and sanitization patterns to maintain security.
Integrating Ajax Load More with Elementor Widgets
Elementor integration requires understanding both plugin structures. Ajax Load More can populate custom Elementor loop templates through proper shortcode configuration and template path specification. The key lies in coordinating Elementor’s template loading mechanism with Ajax Load More’s AJAX response handling.
When building custom Elementor widgets that incorporate Ajax Load More functionality, reference the plugin’s shortcode attribute documentation found in /admin/views/shortcode-builder.php. This file comprehensively documents all available parameters, helping developers construct programmatic shortcodes that display in Elementor widgets.
Custom JavaScript may be necessary to reinitialize Elementor’s JavaScript handlers after Ajax Load More loads new content. Store these scripts in your theme’s /js/ directory and enqueue them conditionally when both Elementor and Ajax Load More are active. This ensures smooth interactions between dynamically loaded content and Elementor’s interactive elements.
For optimal performance with Elementor site enhancements, leverage Ajax Load More’s built-in transition options rather than conflicting CSS animations. The plugin’s /core/css/ directory contains transition classes that work reliably across browsers and don’t conflict with Elementor’s animation system.
Best Practices for Customizing Ajax Load More Files
Never modify core plugin files directly. Updates overwrite changes, creating maintenance headaches and potential security vulnerabilities. Instead, use the plugin’s extensive hook and filter system documented in /core/includes/hooks.php to customize functionality programmatically.
Create custom repeater templates in your theme’s /alm_templates/ directory rather than modifying /core/repeater/ templates. This theme-level customization survives plugin updates and keeps modifications organized. When working with Elementor plugin reviews requirements, maintaining clean customization practices demonstrates professional development standards.
For JavaScript customizations, enqueue custom scripts that extend or override default behavior rather than editing compiled files. Use WordPress’s script dependency system to ensure your custom JavaScript loads after Ajax Load More’s core scripts, allowing you to access and modify its JavaScript objects safely.
Document your customizations thoroughly, especially when building client sites with multiple Elementor functionality extensions. Maintain a changelog of modifications, hook usage, and custom templates. This documentation proves invaluable during troubleshooting or when transitioning projects to other developers.
Test customizations across plugin updates using a staging environment. Ajax Load More regularly updates its core structure and functionality. Ensuring your custom implementations remain compatible prevents production site issues and maintains the reliability expected with professional Elementor customization tools.
Common Directory Structure Issues and Solutions
Permission errors frequently occur when Ajax Load More attempts writing to directories for caching or preloading functionality. The plugin requires write permissions on /uploads/alm-cache/ if cache add-ons are active. Setting directory permissions to 755 and file permissions to 644 typically resolves these issues without compromising security.
Template not found errors usually indicate incorrect path specifications in shortcode attributes or missing templates in expected directories. Verify custom templates exist in /wp-content/themes/your-theme/alm_templates/ and match the template name specified in your shortcode’s template parameter exactly, including case sensitivity.
JavaScript console errors pointing to missing files often result from minification or caching plugin conflicts. Ajax Load More’s JavaScript files in /core/js/ must remain accessible at their expected URLs. Exclude these files from aggressive optimization plugins that move or rename JavaScript assets, or configure optimization plugins to recognize Ajax Load More’s asset structure.
When integrating with best Elementor widgets, conflicts may arise if both systems attempt managing the same DOM elements. Use unique CSS classes and ID attributes in custom repeater templates to prevent Elementor’s JavaScript from inadvertently targeting Ajax Load More elements. Inspect /core/css/ for default classes Ajax Load More uses and avoid namespace collisions in your custom code.
Database query performance issues sometimes stem from inefficient custom queries. The plugin’s query construction classes in /core/classes/ implement WordPress query optimization best practices. When creating custom query parameters through hooks, reference these implementations to ensure your modifications maintain performance standards suitable for production environments with top Elementor extensions.
Frequently Asked Questions

Where are Ajax Load More repeater templates stored?
Ajax Load More repeater templates are stored in the /core/repeater/ directory within the plugin folder. You can create custom templates by adding new PHP files to this location or saving them to your theme’s /alm_templates/ folder for theme-specific implementations that survive plugin updates.
Can I modify Ajax Load More plugin files directly?
You should never modify Ajax Load More plugin files directly as updates will overwrite your changes. Instead, use the plugin’s built-in hooks and filters, create custom templates in your theme directory, or build a child plugin to extend functionality while maintaining update compatibility.
How do I find Ajax Load More JavaScript files for customization?
Ajax Load More JavaScript source files are located in /core/src/js/ with the compiled production files in /core/js/. The main functionality resides in ajax-load-more.js, while individual features like filtering, paging, and SEO have separate dedicated JavaScript files in these directories.
What is the difference between Ajax Load More core and add-on directories?
The core directory contains essential Ajax Load More functionality including templates, scripts, and admin files, while add-on directories (like /pro/, /filters/, /cache/) contain optional premium extensions that add specific features such as filtering, caching, preloading, and advanced query capabilities.
Where should I place custom CSS for Ajax Load More styling?
Place custom Ajax Load More CSS in your theme’s stylesheet or a custom CSS plugin rather than modifying files in /core/css/. For Elementor-specific styling, use Elementor’s Custom CSS feature in widget settings or the site settings area to maintain styles through plugin updates.