* @since 1.8.7 Added `$context` parameter.
* @since 1.9.9.2 Added `$context` parameter.
* @param string $content Content.
* @param array $form_data Form data.
* @param array $fields List of fields.
* @param string $entry_id Entry ID.
* @param string $context Context.
* @param array $context_data Context data.
function wpforms_process_smart_tags( $content, $form_data, $fields = [], $entry_id = '', $context = '', array $context_data = [] ) {
// Skip it if variables have invalid format.
if ( ! is_string( $content ) || ! is_array( $form_data ) || ! is_array( $fields ) ) {
* @since 1.8.7 Added $context parameter.
* @param string $content Content.
* @param array $form_data Form data.
* @param array $fields List of fields.
* @param string $entry_id Entry ID.
* @param string $context Context.
* @param array $context_data Context data.
return (string) apply_filters( 'wpforms_process_smart_tags', $content, $form_data, $fields, $entry_id, $context, $context_data );
* Check if form data slashing enabled.
function wpforms_is_form_data_slashing_enabled() {
if ( $enabled !== null ) {
* Filter to enable form data slashing.
* @param bool $enabled Form data slashing enabled.
$enabled = (bool) apply_filters( 'wpforms_enable_form_data_slashing', $enabled );
$enabled = defined( 'WPFORMS_ENABLE_FORM_DATA_SLASHING' ) ? WPFORMS_ENABLE_FORM_DATA_SLASHING : $enabled;
* Check is frontend JS should be loaded in the header.
function wpforms_is_frontend_js_header_force_load(): bool {
* Allow loading JS in header on various pages.
* @param bool $force_load Force loading JS in header, default `false`.
return (bool) apply_filters( 'wpforms_frontend_js_header_force_load', false );