Hello,
I´m developing a theme with search and I can´t make the wordpress search work with the ZdMultilang translated fields, it only searchs the original post.
I switch languages in the backend of ZdMultilang and I was able to search in the translated language, (it became the main language), but the now translated language returned no results.
I research a lot in the web and found a function in wordpress codex to append a plugin table to the wpdb post search. It´s down bellow here:
add_filter('posts_join', 'mlang_search_join' );
add_filter('posts_where', 'mlang_search_where' );
add_filter('posts_groupby', 'mlang_search_groupby' );
function mlang_search_join($join)
{
global $zd_ml_trans, $wpdb;
if(is_search()) {
$join .= " LEFT JOIN $zd_ml_trans ON " .
$wpdb->posts . ".ID = " . $zd_ml_trans .
".post_content ";
}
return $join;
}
function multilang_search_where($where)
{
if( is_search() ) {
$where = preg_replace(
"/\(\s*post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"(post_title LIKE \\1) OR (post_content LIKE \\1) OR (post_excerpt LIKE \\1) OR (post_status LIKE \\1)", $where );
}
return $where;
}
function multilang_search_groupby( $groupby )
{
global $wpdb;
if( !is_search() ) {
return $groupby;
}
// we need to group on post ID
$mygroupby = "{$wpdb->posts}.ID";
if( preg_match( "/$mygroupby/", $groupby )) {
// grouping we need is already there
return $groupby;
}
if( !strlen(trim($groupby))) {
// groupby was empty, use ours
return $mygroupby;
}
// wasn't empty, append ours
return $groupby . ", " . $mygroupby;
}
I don´t know why this is not working, but I would really appreciate any help on this matter. With the Search Everything sometimes it returns a result sometimes don´t.
Also, I noticed when you perform a search, you can´t switch languages. It would be nice to have a function to add that change to the plugin.
Tiago Morena