set( 'lang', '' ); // $query->set( 'cat', '-29, -94' ); //} // DEBUG QUERY //add_filter( 'posts_request', 'dump_request' ); // //function dump_request( $input ) { // var_dump($input); // return $input; //} // MIXED LANGUAGES STRATEGY // When in not default language, We show post in that language and //the post in default language that do no have translation. /* Polylang uses the action parse_query which is fired before pre_get_posts so $query->set( 'lang', '' ); can't work. */ //add_filter('pre_get_posts', 'get_default_language_posts', 1); /* So parse_query */ add_filter('parse_query', 'get_default_language_posts', 1); function get_default_language_posts($query) { if ($query->is_main_query() && function_exists('pll_default_language') && !is_admin()) { $terms = get_terms('post_translations'); //polylang stores translated post IDs in a serialized array in the description field of this custom taxonomy $defLang = pll_default_language(); //default lanuage of the blog $curLang = pll_current_language(); //current selected language requested on the broswer //echo ".....".$defLang; //echo ".....".$curLang; $filterPostIDs = array(); // discarded posts foreach ($terms as $translation) { // if there is no translations $terms has no elements, and do not exclude any. $transPost = unserialize($translation->description); //if the current language is not the default, lets pick up the default language post if ($defLang != $curLang) { $filterPostIDs[] = $transPost[$defLang]; } } if ($defLang != $curLang) { /*echo "_";*/ $query->set( 'lang', '' ); //$query->set('lang', $curLang . ',' . $defLang); //select both default and current language post $query->set('post__not_in', $filterPostIDs); // remove the duplicate post in the default language } } # Discard some cats if ( $query->is_main_query() && $query->is_home() ) { $query->set( 'cat', '-29, -94' ); // Discard some categories (boletin and boletina). } } if ( ! function_exists( 'twentytwelve_entry_meta' ) ) : /** * Set up post entry meta. * Prints HTML with meta information for current post: categories, tags, permalink, author, and date. * Create your own twentytwelve_entry_meta() to override in a child theme. * @since Twenty Twelve 1.0 */ function twentytwelve_entry_meta($ID) { // Translators: used between list items, there is a space after the comma. $categories_list = ''.get_the_category_list( __( ', ', 'twentytwelve' ) ).''; // Translators: used between list items, there is a space after the comma. $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); $date = sprintf( '%1$s', esc_html( get_the_date() ) ); $author = sprintf( '%1$s', get_the_author() ) ; $curr_l = pll_current_language(); if ($curr_l == 'es'): $alt_l = 'eu'; else: $alt_l = 'es'; endif; $translations = pll_the_languages( array( 'raw' => 1 , 'post_id' => $ID ) ); $home_alt = pll_home_url($alt_l); $link_alt = $translations[$alt_l]['url']; if ($link_alt != $home_alt): $link_translation = sprintf('%2$s',$link_alt, $alt_l); endif; // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. if ( $tag_list ) { $utility_text = __( 'Ths entry was posted in %1$s and tagged %2$s on %3$s by %4$s.', 'twentytwelve' ); } elseif ( $categories_list ) { $utility_text = __( '%5$s %3$s - %1$s ' , 'twentytwelve' ); } else { $utility_text = __( 'his entry was posted on %3$s by %4$s.', 'twentytwelve' ); } printf( $utility_text, $categories_list, $tag_list, $date, $author, $link_translation ); } endif; add_filter( 'wp_nav_menu_items','add_search_box', 10, 2 ); function add_search_box( $items, $args ) { $items .= '
  • ' . get_search_form( false ) . '
  • '; return $items; }