Filter Hooks
The following core Ajax Load More hooks are available to modify query arguments and display settings.
Query Filters
alm_query_args_{id}
The alm_query_args_{id} filter modifies WP_Query arguments by Ajax Load More instance ID.
// functions.php
function my_movie_listing( $args, $id ){
// [ajax_load_more id="movie_listing"]
$args['post_type'] = 'movie';
$args['tax_query'] = array(
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'comedy'
),
);
return $args;
}
add_filter( 'alm_query_args_movie_listing', 'my_movie_listing', 10, 2 );
PHPThis filter requires the following 2-step process:
- Set Unique ID
Create a unique ID for the Ajax Load More instance by setting a value for theid
parameter.
e.g.[ajax_load_more id="your_alm_id"]
- Add Hook
Create the custom hook for this instance by appending the unique ID to the filter name.
add_filter(‘alm_query_args_your_alm_id’, ‘my_function_name’);
When is this filter useful?
This filter is useful for advanced users who prefer writing custom queries vs working with shortcode parameters.
Dynamic Query Parameters
In some cases, you may be required to add an ever-present query to an Ajax Load More instance. You can use the alm_query_args
hook to dynamically add or remove query parameters as needed.
The following snippet appends a WP_Meta_Query
to fetch events by custom field date.
// functions.php
function my_alm_events( $args, $id ) {
// [ajax_load_more id="event_listing" ... ]
$default_query = [
'key' => 'start_date',
'value' => date( 'Y-m-d' ),
'compare' => '>=',
'type' => 'DATE'
];
if ( isset( $args[ 'meta_query' ] ) && $args[ 'meta_query' ] ) {
$args['meta_query'][] = $default_query; // Append to existing meta_query.
} else {
$args['meta_query'] = [ $default_query ]; // meta_query does not exist.
}
return $args;
}
add_filter( 'alm_query_args_event_listing', 'my_alm_events' );
PHPParsing Querystrings
Build a custom query based on querystring parameters by parsing the URL directly inside the alm_query_args filter.
The following snippet retrieves a category value from a querystring and adds the category parameter to the $args array.
// functions.php
function my_alm_query_args( $args ){
// https://website.com/?category=design
$url = $_SERVER["HTTP_REFERER"]; // Get referring URL.
$parts = parse_url($url); // Parse the URL.
parse_str( $parts['query'], $querystring ); // Get the querystring.
if ( $querystring && $querystring['category'] ){
$args['category'] = $querystring['category']; // Add category to $args array.
}
return $args;
}
add_filter( 'alm_query_args_default', 'my_alm_query_args' );
PHPNote: When using the alm_query_args
hook you should never modify the offset or paged query parameters. These parameters must be set within the core plugin or results may be undesired.
alm_query_after_{id}
The alm_query_after_{id} filter can be used to modify the results of a WP_Query by Ajax Load More instance ID.
// [ajax_load_more id="default"]
function my_alm_query_after( $query ){
usort($query->posts, function( $a, $b ) {
return strnatcasecmp( $a->post_name,$b->post_name );
});
return $query;
}
add_filter( 'alm_query_after_default', 'my_alm_query_after' );
PHPalm_allow_future_posts
This filter is used to allow for future posts to be displayed for all users. By default, ALM does not allow for future posts to be displayed for non-admin users.
add_filter( 'alm_allow_future_posts', '__return_true' );
PHPalm_debug
This filter is used to display the Ajax Load More WP_Query arguments in the browser console. Debug data will be returned in a unique entry labeled alm_debug in the browser console.
add_filter( 'alm_debug', '__return_true' );
PHPalm_disable_noscript_{id}
This filter will remove the dynamic <noscript/> tags generated by the Filters and SEO add-ons.
// [ajax_load_more id="default"]
add_filter( 'alm_disable_noscript_default', '__return_true' )
PHPYou can globally disable <noscript/> functionality across all Ajax Load More instances.
add_filter( 'alm_disable_noscript_', '__return_true' )
PHPalm_repeater_path
The alm_repeater_path filter can be used to change the Repeater Template directory path. By default, Repeater Templates are saved in an alm_templates folder located in the wp-content/uploads directory.
// functions.php
add_filter( 'alm_repeater_path', function() {
return get_stylesheet_directory() . '/my-alm-templates';
});
PHPDisplay Options
alm_after_container
This filter adds content or HTML after the Ajax Load More container.
add_filter( 'alm_after_container', function(){
return '<p><a href="/work">View All Work</a></p>';
});
PHPalm_after_button
This filter adds content after the load more .alm-button-wrap button container.
add_filter( 'alm_after_button', function(){
return '<hr/>';
});
PHPalm_before_button
This filter adds content before the load more .alm-button-wrap button containers.
add_filter( 'alm_before_button', function(){
return '<hr/>';
});
PHPalm_before_container
This filter adds content or HTML before the Ajax Load More container.
add_filter( 'alm_before_container', function(){
return '<div>' . esc_attr__( 'Recent Blog Posts', 'framework' ) . '</div>';
});
PHPalm_button_label
This filter modifies the default Older Posts label on the Ajax Load More button.
// functions.php
add_filter( 'alm_button_label', function(){
return esc_attr__( 'Get More Posts!', 'framework' );
});
PHPalm_button_wrap_classes
This filter adds custom HTML classes to the load more button container.
// functions.php
add_filter( 'alm_button_wrap_classes', function(){
return "my-10 rounded-sm bg-black text-white";
});
PHPalm_settings
This filter overrides the global Ajax Load More plugin settings.
add_filter( 'alm_settings', function( $options ) {
$options['_alm_btn_color'] = 'infinite';
return $options;
});
PHPalm_shortcode_defaults
This filter sets global defaults for Ajax Load More parameters. These can be overwritten using the shortcode or the alm_render implementation method.
add_filter( 'alm_shortcode_defaults', function() {
return [
'wrapper_classes' => 'woocommerce',
'css_classes' => 'products columns-2',
'posts_per_page' => '10'
];
});
PHPalm_speed
This filter adjusts the global transition speed of Ajax Load More elements.
add_filter( 'alm_speed', function(){
return 100; // 250
});
PHPAdmin Filters
alm_mask_license_keys
Mask the Ajax Load More license keys on the license plugin admin screen.
add_filter( 'alm_mask_license_keys', '__return_true' );
PHP