WordPress.org

Ready to get started?Download WordPress

Forums

Adding ZdMultilang tables to WordPress search feature (2 posts)

  1. tiagommorena
    Member
    Posted 4 years ago #

    Hello All,

    This is my first post to this forum. I always get a lot of help from here and I hope someone can help me with this issue.

    I´m setting up a bilingual blog using the amazing ZdMultilanguage plugin. It´s a really good plugin but, as far as I can tell, it doesn´t search the translations for the posts. I tested it a lot and I came across a post in the codex about adding the plugin tables to the posts search in the functions.php. http://codex.wordpress.org/Custom_Queries#Keyword_Search_in_Plugin_Table

    I used the code there, but no luck, I can´t search in the second language unless I switch them in the backend config and the second language becomes the first language.

    Here is my code:

    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 would really appreciate any help and thank you all in advance for your attention.

    Best Regards,
    Tiago Morena

  2. led-beleuchtung
    Member
    Posted 3 years ago #

    hi,
    still no solution for that problem?

    greets
    sk

Topic Closed

This topic has been closed to new replies.

About this Topic