Skip to content

Filters Reference (Developers)

Filters let you modify a value before DMS uses it. Register a callback with add_filter( 'hook_name', 'your_callback', 10, N ) and always return the (possibly modified) value.

This is a curated reference of the load-bearing filters, grouped by system. Parameter order below is taken directly from the source call sites. Filters not listed here exist but are internal/UI-field builders - search the pattern apply_filters( 'dms_ if you need one that isn't documented.

add_filter( 'dms_query_args', function ( $args ) {
    $args['posts_per_page'] = 24;
    return $args; // must return the value
} );

Listing Query

dms_query_args

Filter the full listing query args before the SRP query runs.

  • Params: array $query_args
  • Return: array
add_filter( 'dms_query_args', function ( $args ) {
    // Only show published listings updated in the last year.
    $args['date_query'] = [ [ 'after' => '1 year ago', 'column' => 'post_modified' ] ];
    return $args;
} );

dms_total_listings

Filter the reported total result count.

  • Params: int $count, Query $listing_query
  • Return: int

dms_orderby_options

Filter the available "order by" options on the SRP.

  • Params: array $orderby_categories
  • Return: array

dms_get_unique_listing_args

Filter args used to fetch a unique listing.

  • Params: array $args, mixed $value, Type $type

dms_ajax_listing_args

Filter the query args used when the SRP loads listings over AJAX (filtering, paging, infinite scroll).

  • Params: array $args
  • Return: array

dms_ajax_filter_data

Filter the data payload returned to the front end after an AJAX filter request (result counts, term availability, etc.).

  • Params: array $ajax_data
  • Return: array

dms_selected_terms

Filter the set of category terms currently selected as filters on the SRP.

  • Params: array $terms
  • Return: array

Listing Display & Pricing

dms_listing_{price_type}price (dynamic)

Filter a listing's numeric price. {price_type} is empty for the base price, or original for the original price - e.g. dms_listing_price, dms_listing_originalprice.

  • Params: float $price, Listing $listing
  • Return: float
// Add a flat $500 to every displayed base price.
add_filter( 'dms_listing_price', function ( $price, $listing ) {
    return $price + 500;
}, 10, 2 );

dms_listing_formatted_{price_type}price (dynamic)

Filter the currency-formatted price string.

  • Params: string $formatted, int $listing_id
  • Return: string

dms_listing_fees_discounts

Filter the resolved fee/discount line items for a listing.

  • Params: array $items, Listing $listing
  • Return: array

dms_listing_selected_terms

Filter the selected term objects returned for a category on a listing.

  • Params: Term[] $terms, int $category_id, Listing $listing
  • Return: Term[]

dms_listing_load_additional_meta

Filter the list of additional meta keys eagerly loaded with a listing.

  • Params: array $meta
  • Return: array

Filter the next/previous listing navigation URL.

  • Params: string $url, Listing $listing

dms_single_listing_srp_classes

Filter the CSS classes on a single listing card in the SRP.

  • Params: array $listing_classes, Listing $listing
  • Return: array

dms_get_listing_value_shortcode

Filter the output of [dms_get_listing_value].

  • Params: mixed $return, string $category, Listing $listing

SRP Layout

Filter Params Purpose
dms_srp_container_classes array SRP container CSS classes
dms_srp_ul_classes array Listing <ul> classes
dms_srp_column_classes array Per-column classes
dms_srp_column_attrs array Per-column attributes
dms_srp_inline_css string Inline CSS injected on the SRP
dms_vdp_inline_css string Inline CSS injected on the VDP
dms_pagination_next_arrow / dms_pagination_prev_arrow string Pagination arrow markup
dms_after_filter_scroll_offset int (default 100) Scroll offset after filtering

No Results / Stock Alerts

dms_no_results_content

Filter the fully resolved "no results" content (heading, message, CTA, notify-me form).

  • Params: array $content, Type $type, bool $infinite_scrolling
  • Return: array

dms_no_results_fields

Filter the CMB2 field definitions for the No Results settings.

  • Params: array $fields, array $base_condition

dms_stock_alert_matches

Decide whether a listing matches a saved stock alert. The key extension point for custom matching logic.

  • Params: bool $matches, object $alert, Listing $listing
  • Return: bool
add_filter( 'dms_stock_alert_matches', function ( $matches, $alert, $listing ) {
    // Never match sold listings.
    return $matches && ! $listing->is_sold();
}, 10, 3 );

Other stock-alert filters

Filter Params Purpose
dms_stock_alert_auto_notify bool Master toggle for automatic notification
dms_stock_alert_listing_available bool $available, Listing $listing Whether a listing counts as "available"
dms_stock_alert_email_content string $content, object $alert, Listing $listing Shopper notification email body
dms_stock_alert_admin_content string $content, object $alert, int $type_id Admin notification body
dms_stock_alert_admin_recipients array $recipients, int $alert_id, int $type_id Admin recipient list
dms_stock_alert_confirmation_content string $content, object $alert, int $type_id Sign-up confirmation email
dms_stock_alert_from_email / _from_name string, object $alert, Listing\|null Sender identity
dms_stock_alert_batch_size int (default 50) Listings processed per batch
dms_stock_alert_rate_limit / _rate_limit_window int Per-shopper submission rate limiting
dms_stock_alert_send_confirmation bool, int $alert_id, int $type_id Toggle confirmation email

Forms & Mail

The dms_form_mail_* filters all receive ( $value, int $form_id, WP_Post $post ) and let you override how a form submission is emailed. They apply to every DMS form (lead capture, contact, trade-in, etc.), not just lead forms; use $form_id to scope to a single form. They do not affect non-form emails (e.g. stock-alert notifications), which have their own hooks.

Filter Overrides
dms_form_mail_to Recipient address
dms_form_mail_subject Subject line
dms_form_mail_from_name From name
dms_form_mail_reply_to Reply-to address
dms_form_mail_content Email body (fires for plaintext and ADF payloads)
dms_form_mail_content_type Content type (default text/html)
dms_form_mail_type Mail type/format
dms_form_mail_adf_to / _adf_subject ADF (lead XML) recipient & subject
dms_form_mail_success_message / _error_message Front-end result messages
add_filter( 'dms_form_mail_to', function ( $to, $form_id, $post ) {
    return 'sales@example.com';
}, 10, 3 );

dms_form_verify_captcha

Override captcha validation for a form field.

  • Params: bool $is_valid, string $field_id, array $field, WP_Post $post
  • Return: bool

Badges

Filter Params Purpose
dms_badge_css string $css, Badge $badge, string $class Generated badge CSS
dms_badge_template_rendered string $html, string $key, array $data Rendered badge markup
dms_badge_position_options array Available badge positions
dms_listing_badge_options array $fields Badge option fields

Caching

Filter Params Purpose
dms_caching_enabled bool Master cache toggle
dms_get_option_{name} (dynamic) mixed $return, string $name Filter a specific option's read value

See also