Gists

7 days ago
<?php
/**
 * this is a sample snippet to apply relevanssi click tracking to links
 * within the results of a facetwp listing builder template
 * on a page with a search facet set to the relevanssi search engine
 */

/**
 * hijack facetwp_template_html to modify links within template
 * to add relevanssi click tracking
 */
add_filter( 'facetwp_template_html', function( $return, $renderer ) {
	if ( 'my_listing' == $renderer->template["name"] ) {  // change 'my_listing' to name of your listing
		/** there are different filters for get_post type depending on type of posts
		 * unneeded filters can be removed if they are not included in the search results
		 **/
		add_filter( 'post_link', 'fwp_add_rel_tracking', 10, 2 ); // use for posts
		add_filter( 'page_link', 'fwp_add_rel_tracking', 10, 2 ); // use for pages
		add_filter( 'post_type_link', 'fwp_add_rel_tracking', 10, 2 ); // use for custom post types
		// this fakes a get_search_query string which doesn't get created from a search facet
		add_filter( 'get_search_query', function( $keywords ) {
			return FWP()->facet->facets["my_search"]["selected_values"]; // change "my_search" to match the name of your search facet
		});
	}
	return $return; // eturn 
}, 10, 2);

/**
 * hijack facetwp_render output filter to remove relevanssi click tracking
 * after facetwp template has completed output
 */
add_filter( 'facetwp_render_output', function( $output, $params ) {
	remove_filter( 'post_link', 'fwp_add_rel_tracking', 10 );  // use for posts
	remove_filter( 'page_link', 'fwp_add_rel_tracking', 10 );  // use for pages
	remove_filter( 'post_type_link', 'fwp_add_rel_tracking', 10 );  // use for custom post types
	return $output; // return 
}, 10, 2);

/**
 * function to hook on get_permalink filters to add relevanssi
 * click tracking
 */
function fwp_add_rel_tracking( $link, $post ) {
	if ( function_exists( 'relevanssi_add_tracking') ) {  // make sure the relevanssi_add_tracking exists
		$link = relevanssi_add_tracking( $link );
	}
	return $link;
}
2 years ago
<?php
/** this error occurs when there are no available dates for the calendar picker
 ** to display, changing from 0 to "" fixes the calendar but 
 ** actual dates could be used for min/max if preferred, see
 ** https://facetwp.com/help-center/developers/hooks/output-hooks/facetwp_render_output/#customize-a-date-range-facets-date-picker-range
 ** all 4 of these checks may not be needed if both dates are
 ** to configured to display
 **/

// Replace "bad_dates" with the name of your Date Range facet
add_filter( 'facetwp_render_output', function( $output, $params ) {

    if ( isset( $output['settings']['bad_dates'] ) ) {
        if ( 0 == $output['settings']['bad_dates']['range']['min']['minDate'] ) {
            $output['settings']['bad_dates']['range']['min']['minDate'] = ''; // start date min
        }
        if ( 0 == $output['settings']['bad_dates']['range']['min']['maxDate'] ) {
            $output['settings']['bad_dates']['range']['min']['maxDate'] = ''; // start date max
        }
        if ( 0 == $output['settings']['bad_dates']['range']['max']['minDate'] ) {
            $output['settings']['bad_dates']['range']['max']['minDate'] = ''; // End date min
        }
        if ( 0 == $output['settings']['bad_dates']['range']['max']['maxDate'] ) {
            $output['settings']['bad_dates']['range']['max']['maxDate'] = ''; // End date max
        }
    }

    return $output;
  }, 10, 2 );
2 years ago
<?php
add_filter( 'facetwp_render_output', function( $output, $params ) {
    if ( FWP()->ajax->is_preload && isset( $output['settings']['map']['locations'] ) ) {
        $output['settings']['map']['locations'] = [];
    }
    return $output;
}, 11, 2 );
3 years ago
<?php
// Each facet's source now can be accessed in JavaScript with FWP.settings.facet_sources['your_facet_name']

add_filter( 'facetwp_render_output', function( $output, $params ) {
  $sources = [];

  foreach ( FWP()->facet->facets as $facet_name => $facet_data ) {
    if ( isset ( $facet_data['source'] ) ) {
      $sources[ $facet_name ] = $facet_data['source'];
    }
  }

  $output['settings']['facet_sources'] = $sources;
  return $output;
}, 10, 2 );
4 years ago
<?php

add_filter( 'facetwp_render_output', function( $output ) {
    $facets = FWP()->helper->get_facets();
    foreach ( $facets as $facet ) {
        if ( 'fselect' == $facet['type'] ) {
            $output['settings'][ $facet['name'] ]['showSearch'] = false;
        }
    }
    return $output;
});
5 years ago
<?php

add_filter( 'facetwp_render_output', function( $output, $params ) {
    $output['settings']['post_ids'] = FWP()->filtered_post_ids;
    return $output;
}, 10, 2 );

// To access the post IDs, type "FWP.settings.post_ids" into the browser console
5 years ago
<?php

// Add to your (child) theme's functions.php
// replace "YOUR_FACET_NAME" with your *actual* facet name

add_filter( 'facetwp_render_output', function( $output ) {
    $output['settings']['YOUR_FACET_NAME']['range']['min']['minDate'] = date( 'Y-m-d' );
    return $output;
});
4 years ago
<?php
/**
 ** use label instead of showing selected values in fselect
 ** replace "role" with the actual facet name, and "Please select Role" with the text you want to use
 **/

add_filter( 'facetwp_render_output', function( $output ) {
    if ( isset( $output['settings']['role'] ) ) {
        $output['settings']['role']['overflowText'] = 'Please select Role';
        $output['settings']['role']['numDisplayed'] = 0;
    }
    return $output;
});
4 years ago
<?php
/** translate text strings for use with the date range facet **/
add_filter( 'facetwp_render_output', function( $output, $params ) {
    if ( isset( $output['settings']['my_date_range'] ) ) {
        $output['settings']['my_date_range']['locale'] = [
            'weekdays_short' => ['Dg', 'Dl', 'Dt', 'Dc', 'Dj', 'Dv', 'Ds'], // abbreviations for Sun to Sat
            'months_short' => ['Gen', 'Febr', 'Març', 'Abr', 'Maig', 'Juny', 'Jul', 'Ag', 'Set', 'Oct', 'Nov', 'Des'], // abreviations for months Jan to Dec
            'months' => ['Gener', 'Febrer', 'Març', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Setembre', 'Octubre', 'Novembre', 'Desembre'],  //full names for months Jan to Dec
            'firstDayOfWeek' => 1, // 1 is Monday, 0 is Sunday
			'clearText' => 'Clear' // text for clear button
        ];
    }
    return $output;
}, 10, 2 );
3 years ago
<?php

// Add to your (child) theme's functions.php
// replace "YOUR_FACET_NAME" with your *actual* facet name

add_filter( 'facetwp_render_output', function( $output ) {
    $output['settings']['YOUR_FACET_NAME']['range']['min']['minDate'] = '2021-03-21';
    $output['settings']['YOUR_FACET_NAME']['range']['min']['maxDate'] = '2021-12-31';
    return $output;
});