Мултиезичен slider с qtranslate

Да направиш многоезичен сайт с WordPress изглежда като piece of cake на пръв поглед. И в повечето случаи наистина е така. Qtranslate предоставя доста удобна функционалност за тази задачка.

Единственото нещо, което считах за трудност е как да се направи мултиезичен слайдър за определен сайт, но го измамихме!

Първият и основен проблем е, че featured image в WP е само един. За щастие има плъгин, позволяващ добавяне на още такива картинки за желаните post types. Съответно решението е:

  1. Сваляте и си инсталирате плъгина от страницата му там
  2. Добавяте си следния код в темата ви (functions.php за предпочитане)
if (class_exists('MultiPostThumbnails')) {
  $type = 'slides_options';

  $thumb = new MultiPostThumbnails(array(
    'label' => 'Secondary Image',
    'id' => 'secondary-image',
    'post_type' => $type
    )
  );
}
add_image_size('nivo-secondary-image-thumbnail', 960, $nivo_h, true );

Тук slides_options ви е custom post type-а, който използвате за слайдъра. Ако използвате обикновени постове заместете директно ‘post’.

Честито! Вече темата ви поддържа повече от 1 featured image.

Сега само остана да накараме WordPress да показва коректния слайд в зависимост от това кой е езикът.

За целта добавяме функция, която в зависимост от това дали е използван езикът по подразбиране изпозва featured или secondary изображението.

function qtranslate_slide() {

 global $post, $q_config;

 $image_id = get_post_thumbnail_id();
 $language = qtrans_getLanguage();
 $upload_dir = wp_upload_dir();
 $image_data = wp_get_attachment_metadata($image_id);
 if ($q_config['default_language'] != $language) {
 if (class_exists('MultiPostThumbnails') && MultiPostThumbnails::has_post_thumbnail('slides_options', 'secondary-image')) :
 MultiPostThumbnails::the_post_thumbnail('slides_options', 'secondary-image', NULL, 'nivo-secondary-image-thumbnail');
 endif;
 }
 else {
   if (file_exists($upload_dir['basedir'].'/'.$image_data['file'])) {
   $image_url = wp_get_attachment_image_src($image_id,'full', true);
   return $image_url;
  }
 }
}

Сега ни остава само където показваме слайдъра да заместим

$thumbnail = wp_get_attachment_image_src(some, arguments, here);

с

$thumbnail = qtranslate_slide();

Тук вече може да използвате $thumbnail[0] за url адреса на съответното изображение.

И дац ит!

Leave a comment

Вашият имейл адрес няма да бъде публикуван.

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.