Skip to content

Instantly share code, notes, and snippets.

What would you like to do? searchform.php template hack to get search widget working in Polylang, only searching within the active language. 'soil-nice-search' disabled btw.
* searchform.php template hack to fix Polylang search
* Note: Polylang setting 'Hide URL language info for default language' should be enabled for this to work.
* Soil-nice-search disabled in Roots.
$current_language = pll_current_language();
$default_language = pll_default_language();
if($current_language != $default_language){
$language_subdir = $current_language.'/';
} else {
$language_subdir = '';
<form role="search" method="get" class="search-form form-inline" action="<?php echo esc_url(home_url('/'.$language_subdir)); ?>">
<label class="sr-only"><?php _e('Search for:', 'roots'); ?></label>
<div class="input-group">
<input type="search" value="<?php echo get_search_query(); ?>" name="s" class="search-field form-control" placeholder="<?php _e('Search', 'roots'); ?> <?php bloginfo('name'); ?>">
<span class="input-group-btn">
<button type="submit" class="search-submit btn btn-default"><?php _e('Search', 'roots'); ?></button>
Copy link

AlainMelsens commented Mar 6, 2019

Just great! Even after many years, it's working!
This should be integrated somewhere as a standard option in Polylang. :)
Thank you so much for this helpfully hook.

Copy link

fabianmarz commented Jul 13, 2021

I just stumbled upon this.

@AlainMelsens, this is actually integrated in polylang since more than 5 years. See the source code here:

You can use it like this: PLL()->links->get_home_url(NULL, TRUE). The second argument/parameter is to tell if the URL is for the search form or not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment