← Developer Reference

Filter Hooks

This reference targets APD v1.0.x. Last updated: 2026-02-25.

100+ filter hooks to modify listing data, queries, submissions, fields, templates, emails, REST API responses, and more. Each hook includes its parameters and a code example.

Security notes for integrations

  • Filter callbacks that trigger write operations should validate a nonce using wp_verify_nonce() or, in REST contexts, wp_verify_nonce( $value, 'wp_rest' ).
  • Always escape output values returned from filters and sanitize any external input before returning it.

Hook stability: All hooks listed on this page are part of the public API and follow semantic versioning. Hooks will not be removed or have their signatures changed in minor or patch releases. Deprecated hooks will be announced at least one minor version before removal.

Listing Data

apd_listing_fields
filter
Modify listing fields configuration. Receives $fields (array of registered fields). Return modified array.
add_filter( 'apd_listing_fields', function( $fields ) {
    $fields['custom_field'] = [
        'type'     => 'text',
        'label'    => 'Custom Field',
        'required' => false,
    ];
    return $fields;
});
apd_submission_fields
filter
Modify submission form fields. Receives $fields (array). Remove or reorder fields before the form renders.
apd_listing_field_value
filter
Modify a listing field value on retrieval. Parameters: $value, $listing_id, $field_name, $field.
add_filter( 'apd_listing_field_value', function( $value, $listing_id, $field_name, $field ) {
    if ( $field_name === 'price' ) {
        return (float) $value;
    }
    return $value;
}, 10, 4 );
apd_listing_card_classes
filter
Modify listing card CSS classes. Parameters: $classes (array), $listing_id.
apd_default_listing_status
filter
Filters the default status for new listings. @param string $status Default status.
apd_default_listing_type
filter
Filters the default listing type. @param string $type Default type slug.
apd_set_listing_field_value
filter
Filters a field value before saving to a listing. @param mixed $value Field value. @param string $field_name Field name. @param int $listing_id Listing ID.

Query Modifications

apd_search_query_args
filter
Modify search query arguments. Receives $args (array). Customize how AJAX search queries are built.
apd_searchable_meta_keys
filter
Modify which meta keys are included in search. Receives $meta_keys (array). Add custom fields to search index.
apd_orderby_options
filter
Modify available orderby options for listing archives and search results.
apd_categories_with_count_args
filter
Filters query args for categories with count. @param array $args Query arguments.
apd_category_listings_query_args
filter
Filters query args for category listings. @param array $args Query arguments.
apd_related_listings
filter
Filters the related listings result set. @param array $listings Related listings. @param int $listing_id Current listing ID.
apd_related_listings_args
filter
Filters query args for related listings. @param array $args Query arguments. @param int $listing_id Current listing ID.
apd_view_listings_query_args
filter
Filters query args for view listings. @param array $args Query arguments. @param AbstractView $view View instance.

Submission

apd_submission_form_data
filter
Modify submitted form data before processing. Receives $data (array). Set defaults or transform values.
apd_new_listing_post_data
filter
Modify new listing post data before wp_insert_post. Parameters: $post_data, $form_data.
add_filter( 'apd_new_listing_post_data', function( $post_data, $form_data ) {
    $post_data['post_status'] = 'pending';
    return $post_data;
}, 10, 2 );
apd_submission_default_status
filter
Filter default status for new submissions. Parameters: $status, $user_id.
add_filter( 'apd_submission_default_status', function( $status, $user_id ) {
    return current_user_can( 'publish_posts' ) ? 'publish' : 'pending';
}, 10, 2 );
apd_user_can_submit_listing
filter
Filter whether a user can submit listings. Parameters: $can_submit (bool), $user_id.
apd_user_can_edit_listing
filter
Filter whether a user can edit a specific listing. Parameters: $can_edit, $listing_id, $user_id.
apd_submission_success_redirect
filter
Modify redirect URL after successful submission. Parameters: $url, $listing_id, $is_update.
apd_submission_error_redirect
filter
Modify redirect URL after submission error. Parameters: $url, $errors (WP_Error).
apd_edit_not_allowed_args
filter
Filters args for the “edit not allowed” template. @param array $args Template arguments.
apd_submission_field_groups
filter
Filters field groups on the submission form. @param array $groups Field groups.
apd_submission_form_args
filter
Filters args for the submission form. @param array $args Form arguments.
apd_submission_form_classes
filter
Filters CSS classes for the submission form. @param array $classes CSS classes.
apd_submission_form_html
filter
Filters the complete submission form HTML. @param string $html Form HTML. @param array $args Form arguments.
apd_submission_form_shortcode_config
filter
Filters the submission form shortcode configuration. @param array $config Shortcode config.
apd_submission_page_url
filter
Filters the submission page URL. @param string $url Submission page URL.
apd_submission_success_args
filter
Filters args for the submission success template. @param array $args Template arguments.

Spam Protection

apd_bypass_spam_protection
filter
Bypass spam protection for trusted users. Parameters: $bypass (bool), $user_id.
add_filter( 'apd_bypass_spam_protection', function( $bypass, $user_id ) {
    return current_user_can( 'edit_others_posts' );
}, 10, 2 );
apd_submission_spam_check
filter
Custom spam check (e.g., reCAPTCHA). Parameters: $passed (bool), $data (array), $user_id.
apd_honeypot_field_name
filter
Modify the honeypot field name used in submission forms. Default: website_url.
apd_submission_rate_limit
filter
Set maximum submissions per period. Default: 5.
apd_submission_rate_period
filter
Set rate limit period in seconds. Default: 3600 (1 hour).
apd_submission_min_time
filter
Set minimum seconds to submit a form (bot detection). Default: 3.
apd_submission_trusted_proxies
filter
Filters trusted proxy IPs for submission spam protection. @param array $proxies Trusted proxy IPs.

Field System

apd_register_field_config
filter
Modify field configuration before registration. Parameters: $config (array), $name (string).
add_filter( 'apd_register_field_config', function( $config, $name ) {
    if ( $name === 'price' ) {
        $config['required'] = true;
    }
    return $config;
}, 10, 2 );
apd_get_field
filter
Modify a field when retrieved. Parameters: $field (array), $name (string).
apd_get_fields
filter
Modify all fields when retrieved. Parameters: $fields (array), $args (array).
apd_validate_field
filter
Modify field validation result. Parameters: $result (bool|WP_Error), $value, $field, $context, $field_type.
apd_render_field
filter
Modify rendered field HTML (form input). Parameters: $html, $field, $value, $context, $listing_id.
apd_render_field_display
filter
Modify rendered field display HTML (single listing view). Parameters: $html, $field, $value, $listing_id.
apd_should_display_field
filter
Control whether a field should be displayed. Parameters: $display (bool), $field, $context, $listing_id.
add_filter( 'apd_should_display_field', function( $display, $field, $context, $listing_id ) {
    if ( $field['name'] === 'premium_field' && ! is_premium_listing( $listing_id ) ) {
        return false;
    }
    return $display;
}, 10, 4 );
apd_before_validate_field
filter
Filters field value before validation. @param mixed $value Field value. @param string $field_name Field name. @param array $config Field config.
apd_field_group_wrapper_class
filter
Filters CSS classes for field group wrappers. @param array $classes CSS classes. @param string $group Group name.
apd_field_wrapper_class
filter
Filters CSS classes for individual field wrappers. @param array $classes CSS classes. @param string $field_name Field name.
apd_register_default_fields
filter
Filters the default field configurations. @param array $fields Default field configs.
apd_render_display_fields
filter
Filters the rendered display fields HTML. @param string $html Rendered HTML. @param int $listing_id Listing ID.
apd_render_field_group
filter
Filters the rendered field group HTML. @param string $html Group HTML. @param string $group Group name.
apd_sanitized_fields
filter
Filters sanitized field values after validation. @param array $values Sanitized values. @param array $raw Raw values.

Search Filters

apd_filter_options
filter
Modify filter options dynamically. Parameters: $options (array), $filter (AbstractFilter instance).
apd_render_filter
filter
Modify rendered filter HTML. Parameters: $output, $filter, $value, $request.
apd_ajax_filter_response
filter
Filters the AJAX listing filter response data. @param array $response Response data.
apd_filter_wrapper_class
filter
Filters CSS classes for search filter wrappers. @param array $classes CSS classes. @param string $filter_name Filter name.
apd_search_form_classes
filter
Filters CSS classes for the search form. @param array $classes CSS classes.

Templates

apd_locate_template
filter
Modify template path lookup. Parameters: $located (string path), $template (string name). Override which template file is used.
apd_archive_title
filter
Modify the archive page title. Receives $title (string).
apd_archive_description
filter
Modify the archive page description. Receives $description (string).
apd_pagination_args
filter
Modify pagination arguments. Parameters: $args (array), $query (WP_Query).
apd_get_template_part
filter
Filters the template part path before loading. @param string $template Template path. @param string $slug Template slug. @param string $name Template name.

Shortcodes

apd_shortcode_{tag}_atts
filter
Modify shortcode attributes before render. Parameters: $atts, $tag, $content. Replace {tag} with the shortcode name.
add_filter( 'apd_shortcode_listings_atts', function( $atts, $tag, $content ) {
    $atts['columns'] = 4;
    return $atts;
}, 10, 3 );
apd_shortcode_{tag}_output
filter
Modify shortcode output HTML. Parameters: $output, $atts, $content. Wrap or transform the rendered output.
apd_categories_shortcode_classes
filter
Filters CSS classes for the categories shortcode. @param array $classes CSS classes.
apd_categories_shortcode_query_args
filter
Filters query args for categories shortcode. @param array $args Query arguments.
apd_listings_shortcode_pagination_args
filter
Filters pagination args for the listings shortcode. @param array $args Pagination arguments.
apd_listings_shortcode_query_args
filter
Filters query args for the listings shortcode. @param array $args Query arguments.
apd_login_form_shortcode_args
filter
Filters args for the login form shortcode. @param array $args Shortcode arguments.
apd_register_form_errors
filter
Filters registration form validation errors. @param WP_Error $errors Validation errors.
apd_search_form_shortcode_args
filter
Filters args for the search form shortcode. @param array $args Shortcode arguments.

Blocks

apd_block_{name}_args
filter
Modify block arguments before render. Parameters: $args (array), $block (AbstractBlock). Replace {name} with the block name.
apd_block_{name}_output
filter
Modify block output after render. Parameters: $output (string), $attributes (array).
apd_listings_block_query_args
filter
Modify listings block query arguments. Parameters: $query_args (array), $attributes (array).
apd_blocks_editor_data
filter
Modify block editor localization data. Receives $data (array).
apd_categories_block_query_args
filter
Filters query args for the categories block. @param array $args Query arguments.
apd_listings_block_pagination_args
filter
Filters pagination args for the listings block. @param array $args Pagination arguments.
apd_search_form_block_args
filter
Filters args for the search form block. @param array $args Block arguments.

Dashboard

apd_dashboard_tabs
filter
Modify dashboard tabs. Parameters: $tabs (array), $user_id. Add custom tabs to the frontend dashboard.
add_filter( 'apd_dashboard_tabs', function( $tabs, $user_id ) {
    $tabs['custom'] = [
        'label'    => 'Custom Tab',
        'callback' => 'render_custom_tab',
    ];
    return $tabs;
}, 10, 2 );
apd_dashboard_stats
filter
Modify dashboard statistics. Parameters: $stats (array), $user_id.
apd_dashboard_args
filter
Modify dashboard template arguments. Receives $args (array).
apd_dashboard_html
filter
Modify the complete dashboard HTML output. Parameters: $output (string), $args (array).
apd_dashboard_url
filter
Modify the dashboard page URL. Receives $url (string).
apd_my_listings_query_args
filter
Modify My Listings query arguments. Parameters: $query_args (array), $user_id.
apd_my_listings_actions
filter
Modify My Listings row actions (edit, delete, etc.). Parameters: $actions (array), $post (WP_Post).
apd_user_can_delete_listing
filter
Filter whether a user can permanently delete a listing. Parameters: $can_delete, $listing_id, $user_id.
apd_favorites_page_query_args
filter
Modify favorites page query arguments. Parameters: $query_args (array), $user_id.
apd_dashboard_classes
filter
Filters CSS classes for the dashboard wrapper. @param array $classes CSS classes.
apd_dashboard_register_url
filter
Filters the registration URL on the dashboard login page. @param string $url Registration URL.
apd_dashboard_show_register
filter
Controls whether to show the register link on dashboard. @param bool $show Whether to show register link.
apd_my_listings_args
filter
Filters args for the My Listings dashboard tab. @param array $args Tab arguments.

Profile

apd_profile_args
filter
Modify profile template arguments. Receives $args (array).
apd_profile_user_data
filter
Modify profile user data. Parameters: $data (array), $user_id.
apd_validate_profile
filter
Modify profile validation errors. Parameters: $errors (WP_Error), $data (array), $user_id.
apd_user_social_links
filter
Modify user social link definitions. Parameters: $links (array), $user_id.

Favorites

apd_favorites_require_login
filter
Require login for favorites. Return true to require authentication.
apd_guest_favorites_enabled
filter
Enable guest (cookie-based) favorites. Return true to allow non-logged-in users to save favorites.
apd_favorite_button_classes
filter
Modify favorite button CSS classes. Parameters: $classes (array), $listing_id, $is_favorite (bool).
apd_favorite_button_html
filter
Modify the complete favorite button HTML. Parameters: $html, $listing_id, $args (array).
apd_favorite_listings_batch_size
filter
Filters the batch size for favorite listings queries. @param int $batch_size Batch size.
apd_favorite_listings_query_args
filter
Filters query args for retrieving favorite listings. @param array $args Query arguments.
apd_favorites_empty_browse_url
filter
Filters the “Browse Listings” URL on empty favorites. @param string $url Browse URL.
apd_favorites_enabled
filter
Controls whether the favorites feature is enabled. @param bool $enabled Whether favorites are enabled.
apd_favorites_output
filter
Filters the favorites shortcode output HTML. @param string $output Output HTML.
apd_favorites_page_args
filter
Filters args for the favorites dashboard page. @param array $args Page arguments.

Reviews

apd_reviews_require_login
filter
Require login for reviews. Return true to require authentication before reviewing.
apd_review_min_content_length
filter
Set minimum review content length in characters. Receives $length (int).
apd_review_data
filter
Modify review comment data before saving. Parameters: $comment_data, $listing_id, $data (original review data).
apd_review_default_status
filter
Set default review status (pending or approved). Auto-approve for moderators:
add_filter( 'apd_review_default_status', function( $status ) {
    return current_user_can( 'moderate_comments' ) ? 'approved' : 'pending';
});
apd_reviews_per_page
filter
Set number of reviews per page. Receives $per_page (int). Default: 10.
apd_author_can_review_own_listing
filter
Filter whether a listing author can review their own listing. Parameters: $can_review, $listing_id, $user_id.
apd_can_show_review_form
filter
Control whether the review form is shown. Parameters: $can_show (bool), $listing_id.
apd_user_can_edit_review
filter
Filter whether a user can edit a review. Parameters: $can_edit, $review_id, $user_id, $review (WP_Comment).
apd_review_guidelines_text
filter
Modify review guidelines text shown above the review form. Receives $text (string).
apd_rating_precision
filter
Filters the decimal precision for rating display. @param int $precision Decimal places.
apd_rating_star_count
filter
Filters the number of stars in the rating system. @param int $count Number of stars.
apd_rating_summary_data
filter
Filters the rating summary template data. @param array $data Summary data. @param int $listing_id Listing ID.
apd_review_form_classes
filter
Filters CSS classes for the review form. @param array $classes CSS classes.
apd_review_form_data
filter
Filters review form template data. @param array $data Form data.
apd_review_form_data_collected
filter
Filters collected review form data before processing. @param array $data Collected data.
apd_review_success_message
filter
Filters the success message after review submission. @param string $message Success message.
apd_reviews_list_data
filter
Filters the reviews list template data. @param array $data List data.
apd_reviews_pagination_data
filter
Filters the reviews pagination template data. @param array $data Pagination data.
apd_reviews_section_data
filter
Filters the reviews section template data. @param array $data Section data.
apd_show_empty_star_rating
filter
Controls whether to show star rating when no reviews exist. @param bool $show Whether to show empty rating.
apd_single_review_data
filter
Filters individual review template data. @param array $data Review data.

Contact Form

apd_listing_can_receive_contact
filter
Control which listings can receive contact inquiries. Parameters: $can_receive (bool), $listing_id, $listing (WP_Post).
apd_contact_validation_errors
filter
Modify contact form validation errors. Parameters: $errors (WP_Error), $data (array).
apd_contact_email_to
filter
Modify contact email recipient. Parameters: $to (string), $data (array), $listing (WP_Post).
apd_contact_email_subject
filter
Modify contact email subject. Parameters: $subject, $data, $listing.
apd_contact_email_message
filter
Modify contact email message body. Parameters: $message, $data, $listing.
apd_contact_email_headers
filter
Modify contact email headers. Parameters: $headers (array), $data, $listing.
apd_contact_send_admin_copy
filter
Control whether admin receives a copy of contact emails. Return true to enable.
apd_contact_admin_email
filter
Modify admin email address for contact copies. Receives $email (string).

Contact Spam Protection

apd_contact_bypass_spam_protection
filter
Bypass spam protection for contact forms. Parameters: $bypass (bool), $user_id.
apd_contact_spam_check
filter
Custom spam check for contact forms. Parameters: $passed, $data, $user_id.
apd_contact_honeypot_field_name
filter
Modify contact form honeypot field name. Default: contact_website.
apd_contact_min_time
filter
Minimum seconds to submit the contact form. Default: 2.
apd_contact_rate_limit
filter
Maximum contact submissions per period. Default: 10.
apd_contact_rate_period
filter
Contact rate limit period in seconds. Default: 3600 (1 hour).
apd_contact_form_classes
filter
Filters CSS classes for the contact form. @param array $classes CSS classes.
apd_contact_form_html
filter
Filters the complete contact form HTML. @param string $html Form HTML.
apd_contact_trusted_proxies
filter
Filters trusted proxy IPs for contact spam protection. @param array $proxies Trusted proxy IPs.
apd_inquiry_post_data
filter
Filters inquiry post data before saving. @param array $data Post data.
apd_inquiry_post_type_args
filter
Filters the inquiry CPT registration args. @param array $args CPT arguments.
apd_listing_inquiries_query_args
filter
Filters query args for listing inquiries. @param array $args Query arguments.
apd_track_inquiry
filter
Controls whether to track an inquiry. @param bool $track Whether to track.
apd_user_can_view_inquiry
filter
Filters whether a user can view an inquiry. @param bool $can_view Whether user can view. @param int $inquiry_id Inquiry ID.
apd_user_inquiries_query_args
filter
Filters query args for user inquiries. @param array $args Query arguments.

Email

apd_email_to
filter
Modify email recipient. Parameters: $to, $subject, $context (array).
apd_email_subject
filter
Modify email subject. Parameters: $subject, $to, $context.
apd_email_message
filter
Modify email message body. Parameters: $message, $to, $subject, $context.
apd_email_headers
filter
Modify email headers. Parameters: $headers (array), $to, $subject, $context.
apd_email_notification_enabled
filter
Control whether a notification type is enabled. Parameters: $enabled (bool), $type (string).
apd_email_from_name
filter
Customize the email “From” name. Receives $name (string).
apd_email_from_email
filter
Customize the email “From” address. Receives $email (string).

Email Appearance

apd_email_header_color
filter
Customize email header background color. Receives $color (hex string). Default: #1a73e8.
apd_email_header_text_color
filter
Customize email header text color. Default: #ffffff.
apd_email_button_color
filter
Customize email CTA button color. Default: #1a73e8.
apd_email_replace_placeholders
filter
Add custom placeholders to email templates. Parameters: $message, $context.
add_filter( 'apd_email_replace_placeholders', function( $message, $context ) {
    $message = str_replace( '{custom_value}', 'replacement', $message );
    return $message;
}, 10, 2 );
apd_email_admin_email
filter
Filters the admin email address for notifications. @param string $email Admin email address.
apd_email_plain_text_message
filter
Filters the plain text version of email messages. @param string $message Plain text message.

Settings

apd_settings_tabs
filter
Modify admin settings tabs. Receives $tabs (array). Add custom settings sections.
add_filter( 'apd_settings_tabs', function( $tabs ) {
    $tabs['custom'] = 'Custom Settings';
    return $tabs;
});
apd_settings_defaults
filter
Modify default settings values. Receives $defaults (array).
apd_sanitize_settings
filter
Modify settings before saving to the database. Receives $settings (array).
apd_default_pages
filter
Filters the default pages created on activation. @param array $pages Default page configs.
apd_is_plugin_admin_screen
filter
Filters whether the current screen is a plugin admin screen. @param bool $is_admin Whether it is an admin screen.

Modules

apd_register_module_config
filter
Modify module configuration before registration. Parameters: $config (array), $slug (string).
apd_get_module
filter
Modify a module on retrieval. Parameters: $config (array), $slug (string).
apd_get_modules
filter
Modify the modules list on retrieval. Parameters: $modules (array), $args (array).

Display & Views

apd_view_container_classes
filter
Modify view container CSS classes. Parameters: $classes (array), $view (AbstractView).
apd_view_listing_args
filter
Modify listing template arguments within a view. Parameters: $args, $listing_id, $view.
apd_skip_admin_view_count
filter
Control whether to skip view count for admin users. Return true to exclude admins from view counts.
apd_should_load_frontend_assets
filter
Control whether to load frontend CSS/JS assets on the current page. Receives $should_load (bool).
apd_frontend_script_data
filter
Modify frontend JavaScript localization data (wp_localize_script). Receives $data (array).
apd_admin_script_data
filter
Modify admin JavaScript localization data. Receives $data (array).
apd_grid_responsive_columns
filter
Filters responsive column breakpoints for grid view. @param array $columns Responsive column config.
apd_list_responsive_layout
filter
Filters responsive layout config for list view. @param array $layout Responsive layout config.
apd_view_container_attributes
filter
Filters HTML attributes for the view container. @param array $attrs HTML attributes.

REST API

apd_rest_listings_query_args
filter
Modify REST API listing query arguments. Parameters: $args (array), $request (WP_REST_Request).
apd_rest_listing_data
filter
Modify REST API listing response data. Parameters: $data (array), $listing (WP_Post), $request.
apd_rest_review_data
filter
Modify REST API review response data. Parameters: $data (array), $review (WP_Comment).
apd_rest_inquiry_data
filter
Modify REST API inquiry response data. Parameters: $data (array), $inquiry (WP_Post).
apd_rest_term_data
filter
Modify REST API taxonomy term response data. Parameters: $data (array), $term (WP_Term).
apd_rest_favorite_listing_data
filter
Filters REST API favorite listing response data. @param array $data Response data. @param int $listing_id Listing ID.
apd_rest_taxonomy_query_args
filter
Filters REST API taxonomy query args. @param array $args Query arguments.

Performance

apd_expiration_cron_batch_size
filter
Filters the batch size for expiration cron processing. @param int $batch_size Batch size.
apd_expiration_cron_lock_ttl
filter
Filters the lock TTL for the expiration cron job. @param int $ttl Lock TTL in seconds.

Demo Data

apd_demo_default_counts
filter
Modify default demo data quantities. Receives $defaults (array of count values).
apd_demo_category_data
filter
Modify demo category hierarchy data. Receives $categories (array).
apd_demo_listing_data
filter
Modify demo listing data before creation. Parameters: $listing_data, $category_slug, $index.