Created
March 17, 2020 12:45
-
-
Save msaari/d9aee2d40ad454c656a8e5bec63da8d3 to your computer and use it in GitHub Desktop.
Relevanssi updated Polylang function
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function relevanssi_polylang_where_include_terms( $where ) { | |
global $wpdb; | |
$current_language = substr( get_locale(), 0, 2 ); | |
if ( function_exists( 'pll_current_language' ) ) { | |
$current_language = pll_current_language(); | |
} | |
$languages = get_terms( array( 'taxonomy' => 'language' ) ); | |
$language_id = 0; | |
foreach ( $languages as $language ) { | |
if ( | |
! is_wp_error( $language ) && | |
$language instanceof WP_Term && | |
$language->slug === $current_language | |
) { | |
$language_id = intval( $language->term_id ); | |
break; | |
} | |
} | |
// Language ID should now have current language ID. | |
if ( 0 !== $language_id ) { | |
// Do a simple search-and-replace to modify the query. | |
$where = preg_replace( '/\s+/', ' ', $where ); | |
$where = preg_replace( '/\(\s/', '(', $where ); | |
$where = str_replace( | |
"AND relevanssi.doc IN (SELECT DISTINCT(tr.object_id) FROM {$wpdb->prefix}term_relationships AS tr WHERE tr.term_taxonomy_id IN ($language_id))", | |
"AND (relevanssi.doc IN ( SELECT DISTINCT(tr.object_id) FROM {$wpdb->prefix}term_relationships AS tr WHERE tr.term_taxonomy_id IN ($language_id)) OR (relevanssi.doc = -1))", | |
$where | |
); | |
} | |
return $where; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment