Caddy PHP filter reference

These are the PHP filters Caddy 3.0 exposes for customizing behavior from a child theme or custom plugin. For the template action hooks that let you inject markup into the cart screens, see Caddy cart screen action hooks.

caddy_cart_bubble_icon

Filters the SVG markup of the floating cart bubble icon (also used by the cart menu widget). Receives the default shopping-bag SVG; return your own. The output is sanitized against an SVG allowlist, and icons drawn with currentColor inherit the bubble’s icon color settings.

add_filter( 'caddy_cart_bubble_icon', function ( $icon ) {
	return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="…"/></svg>';
} );

caddy_use_store_api_recommendations (Pro)

Boolean, default true. Return false to skip rendering the Store-API-powered recommendations carousel entirely — useful for conditionally disabling recommendations beyond what the settings allow:

// Only show in-cart recommendations to logged-in customers
add_filter( 'caddy_use_store_api_recommendations', function ( $enabled ) {
	return is_user_logged_in() ? $enabled : false;
} );

caddy_rest_rate_limit / caddy_rest_rate_limit_window

Control the rate limiting applied to Caddy’s REST endpoints. Defaults: 60 requests per 60-second window, per endpoint, per user or IP. See the REST API reference for details.

add_filter( 'caddy_rest_rate_limit', fn( $limit ) => 100 );
add_filter( 'caddy_rest_rate_limit_window', fn( $seconds ) => 120 );

caddy_tab_names (admin)

Filters the tabs on the Caddy > Settings admin page (default: Settings, Styling). Each entry is keyed by tab slug with tab_name and tab_icon. Pair it with the caddy_admin_tab_screen action to render your tab’s content — this is how Caddy Pro adds its own Tools tab:

add_filter( 'caddy_tab_names', function ( $tabs ) {
	$tabs['my_tab'] = array(
		'tab_name' => __( 'My Tab', 'my-plugin' ),
		'tab_icon' => 'dashicons dashicons-admin-generic',
	);
	return $tabs;
} );

add_action( 'caddy_admin_tab_screen', function () {
	if ( isset( $_GET['tab'] ) && 'my_tab' === $_GET['tab'] ) {
		echo '<h3>My settings</h3>';
	}
} );

A sibling filter, caddy_add_on_tab_names, does the same for the Caddy > Add-ons page.

Adding a custom screen to the cart window

There’s no filter for the front-end cart/saves tabs — instead, use the action pair in the window template: caddy_after_nav_tabs (inject your tab trigger next to the cart and saves icons) and caddy_after_screen_tabs (inject the matching screen panel). This is the same extension point integrations like the Klaviyo add-on build on.

Messaging hooks

The free shipping meter’s text areas fire caddy_free_shipping_title_text, caddy_fs_congrats_text, and caddy_fs_spend_text actions if you need to inject or replace meter messaging programmatically (Pro users can usually do this from the rewards meter settings instead).

Grow your store smarter

Cart conversion tactics, feature updates, and strategies top WooCommerce stores use to scale — straight to your inbox.

By subscribing, you agree to our Privacy Policy. Unsubscribe anytime.