• На сайте установлен WMPL плагин.
    Нужно сделать запрос для вывода постов (записей) только на том языке, который в данный момент выбран.
    Например, есть дефолтный виджет «Новости» (WP_Widget_Recent_Posts) — он выдает, в зависимости от выбранного языка. Значит, сделать такое возможно.
    Я использую еще плагин Recent Posts — для вывода последних новостей на одной из страниц.
    Его код:

    <?php
    function mdv_recent_posts($no_posts = 5, $post_date = ‘

    • ‘, $after = ‘
    • ‘, $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true, $include_pages = false) {
      global $wpdb;
      $datef = ‘Y/m/j’;
      $time_difference = get_option(‘gmt_offset’);
      $now = gmdate(«Y-m-d H:i:s»,time());
      $request = «SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = ‘publish’ «;

      if($hide_pass_post) $request .= «AND post_password =» «;
      if($include_pages) $request .= «AND (post_type=’post’ OR post_type=’page’) «;
      else $request .= «AND post_type=’post’ «;
      $request .= «AND post_date_gmt < ‘$now’ ORDER BY post_date DESC LIMIT $skip_posts, $no_posts»;
      $posts = $wpdb->get_results($request);
      $output = »;
      if($posts) {
      foreach ($posts as $post) {
      $post_title = stripslashes($post->post_title);
      $permalink = get_permalink($post->ID);
      $post_date = mysql2date($datef, $post->post_date);
      $output .= $post_date .’ ‘ . ‘‘ . htmlspecialchars($post_title) . ‘‘;
      if($show_excerpts) {
      $post_excerpt = stripslashes($post->post_excerpt);
      $output.= » . $post_excerpt;
      }
      $output .= $after ;
      }
      } else {
      $output .= $before . «None found» . $after;
      }
      echo $output;
      }
      ?>

      Пыталась в строке
      $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' ";
      выставить запрос, что-то вроде:

      $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts wp, wp_icl_languages_translations icl  WHERE
      wp.ID =  icl.id AND wp.post_status = 'publish' AND icl.language_code = '".$this_lang."' ";

      Но для этого нужно еще как-то определить this_lang, да и вряд ли сам запрос корректен. Может кто-нибудь помочь?

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Решила проблему следующим образом:
    Не стала использовать плагин Recent Posts, а просто на странице page.php ввела следующий код:

    <?php if ( is_page('index') || is_front_page('')) : ?>
    <?php $lastposts = get_posts('numberposts=3&suppress_filters=0');
            $datef = 'Y/m/j';
    	foreach($lastposts as $lastpost) :
    	$lastpost_date = mysql2date($datef, $lastpost->post_date);
    	$title = '<a href="'.get_page_link($post->post_ID).'">'.$lastpost->post_title.'</a>';
    	$post_excerpt = stripslashes($lastpost->post_excerpt);
    	echo "$lastpost_date $title <br /> $post_excerpt <br /><br />";
    	endforeach;
    ?>
    <?php endif; ?>

    suppress_filters=0 — делает возможным вывод новостей только на выбранном языке.

    Вот теперь более правильный вывод (была проблема со ссылками):

    <?php if ( is_page('index') || is_front_page('')) : ?>
    <?php $lastposts = get_posts('numberposts=3&suppress_filters=0');
            $datef = 'Y/m/j';
    	foreach($lastposts as $lastpost) :
    	$post_title = stripslashes($lastpost->post_title);
    	$lastpost_date = mysql2date($datef, $lastpost->post_date);
    	$permalink = get_permalink($lastpost->ID);
    	$title = '<a href="' . $permalink . '" rel="bookmark" title="' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>';
    	$post_excerpt = stripslashes($lastpost->post_excerpt);
    	echo "$lastpost_date $title <br /> $post_excerpt <br /><br />";
    	endforeach;
    ?>
    <?php endif; ?>

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Спасибо, что поделились.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «WMPL плагин. Вывод записей на выбранном языке.» закрыта для новых ответов.