str_replace( 'tax/', '', $facet['source'] ), 'term_order' => true, // Custom flag 'fields' => 'ids', ] ); if ( ! empty( $term_ids ) && ! is_wp_error( $term_ids ) ) { $term_ids = implode( ',', $term_ids ); $orderby = "FIELD(f.term_id, $term_ids)"; } } // Sort by depth if ( FWP()->helper->facet_is( $facet, 'hierarchical', 'yes' ) ) { $orderby = "f.depth, $orderby"; } return $orderby; } /** * Grab the limit, and support -1 * @since 3.5.4 */ function get_limit( $facet, $default = 10 ) { $count = $facet['count']; if ( '-1' == $count ) { return 1000; } elseif ( ctype_digit( $count ) ) { return $count; } return $default; } /** * Adjust the $where_clause for facets in "OR" mode * * FWP()->or_values contains EVERY facet and their matching post IDs * FWP()->unfiltered_post_ids contains original post IDs * * @since 3.2.0 */ function get_where_clause( $facet ) { // Ignore the current facet's selections if ( isset( FWP()->or_values ) && ( 1 < count( FWP()->or_values ) || ! isset( FWP()->or_values[ $facet['name'] ] ) ) ) { $post_ids = []; $or_values = FWP()->or_values; // Preserve original unset( $or_values[ $facet['name'] ] ); $counter = 0; foreach ( $or_values as $name => $vals ) { $post_ids = ( 0 == $counter ) ? $vals : array_intersect( $post_ids, $vals ); $counter++; } $post_ids = array_intersect( $post_ids, FWP()->unfiltered_post_ids ); } else { $post_ids = FWP()->unfiltered_post_ids; } $post_ids = empty( $post_ids ) ? [ 0 ] : $post_ids; return ' AND post_id IN (' . implode( ',', $post_ids ) . ')'; } /** * Render some commonly used admin settings * @since 3.5.6 * @deprecated 3.9 */ function render_setting( $name ) { echo FWP()->settings->get_facet_field_html( $name ); } }