Да направиш многоезичен сайт с WordPress изглежда като piece of cake на пръв поглед. И в повечето случаи наистина е така. Qtranslate предоставя доста удобна функционалност за тази задачка.
Единственото нещо, което считах за трудност е как да се направи мултиезичен слайдър за определен сайт, но го измамихме!
Първият и основен проблем е, че featured image в WP е само един. За щастие има плъгин, позволяващ добавяне на още такива картинки за желаните post types. Съответно решението е:
- Сваляте и си инсталирате плъгина от страницата му там
- Добавяте си следния код в темата ви (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 адреса на съответното изображение.
И дац ит!