Добавяне на нова валута в WooCommerce

Изглеждаше ми, че добавянето на нова валута (като лв. например) би било лесно с WooCommerce, но не би. Не можах да намеря никакъв wp filter в документацията (филтър има, но се оказа трудно откриваем)

Edit: Пуснах плъгин, който добавя BGN лев като валута към WooCommerce. Може да го свалите от тук

Все пак успях да намеря 2 филтъра (явно недокументирани) за тази задача: ‘woocommerce_currencies’ и ‘woocommerce_currency_symbol’. Добавянето на BGN става по следния начин:

add_filter( 'woocommerce_currencies', 'add_bgn_currency' );
function add_bgn_currency( $currencies ) {
 $currencies['BGN'] = __( 'Bulgarian lev', 'woocommerce' );
 return $currencies;
}
add_filter('woocommerce_currency_symbol', 'add_bgn_currency_symbol', 10, 2);
function add_bgn_currency_symbol( $currency_symbol, $currency ) {
 switch( $currency ) {
 case 'BGN': $currency_symbol = 'лв.'; break;
 }
 return $currency_symbol;
}

След като добавите този код в списъка с валутите в админситрацията на WooCommerce ще ви се появи и заветния лев (най-отдолу):

WooCommerce Currency Settings
WooCommerce Currency Settings

Все пак един проблем продължава да стои отворен – позицията на символа за валута не може да се управлява от hook/filter. Единственото, което може да направите е да го зададете за целия сайт. (Дори локализиращите настройки с WPML не предоставят тази опция. И дори тази конфигурация е поставена на не-толкова-интуитивно място:

Продължавам да се чудя как да го направя с php only. В краен случай може да пробвам с good old JS.


//

Мултиезичен 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 адреса на съответното изображение.

И дац ит!

Как да действаме против ACTA?

Ще си спестя обяснения какво е ACTA и какви могат да са последствията от подобен закон. За подобна информация прочетете мнението на някой блогър (http://blog.peio.org/?p=7611http://yurukov.net/blog/2012/01/27/acta-ili-kak-se-obirat-choveshki-pra/ енд соу он).

Пиша за да ви помогна да изпратите мейл на българските представители в ЕП. Толкова просто колкото да натиснеш бутона.

 

 

Сложете това на сайта си като копирате следното:
<a href="mailto: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]?subject=Против ACTA&body=Представители в ЕП,%0A%0AАз съм против ратифицирането на ACTA тъй като считам, че това накърнява правото ми на информацираност и личната ми неприкосновеност, гарантирани от конституцията на Република България!%0A%0AКажете не на ACTA!"><img src="http://ninio.shtrak.eu/wp-content/uploads/sites/4/2012/01/Acta-300x116.png" alt="" title="Acta" width="300" height="116" /></a>

Проблеми с css3 анимация (и решения)

@-webkit-keyframes pulsehtml5 {
0% {
opacity:1;
}
50% {
opacity:0.7;
}
100% {
opacity:1;
}
}
.animated-html5 {
/*-webkit-transition: 1s all linear;*/
-webkit-animation: pulsehtml5 2s ease-in-out infinite;
}
.animated-html5:hover {
/*opacity: 0.5;*/
}

HTML5 лого и CSS3 анимация
Малко са хората, които са се докоснали до възможностите на css3 анимациите и не са се възхитили колко просто се използва тя и каква е производителността на устройствата, когато я изпълняват. Ръчкайки от известно време в тази материя се сблъсках с някои предполагам тъпи грешки, които няма как да не споделя.

Проблемът е в това, че въпреки добавянето на -webkit-transition в css-а, от анимация – ни вест ни кост.

Причините при мен бяха следните:

  1. Опитвах се да анимирам скриването и показването на елементи чрез display:none; и display:block; По пътя но нормалната логика (неприсъща от време на време за мен) анимирането е просто постепенно променяне на някой css атрибут. Та следователно за да променим постепенно display атрибута какво трябва да се направи? Да премине през block; inline-block; inline; none? 🙂 Е нЕма логика и за това нЕма и анимация. Good point!
  2. Опитвайки се да анимирам промяната в размера на един елемент, анимацията беше напълно cross-browser complient (демек изглеждаше еднакво добре и на IE6 и на Chrome… a.k.a. изобщо я нямаше). Отново след вкарване на малко количество логика и наблюдение се оказа, че се опитвам да анимирам от ширина 100% към ширина 200 пиксела. Е явно браузъра не обича да превръща от проценти в нещо друго. (Ако променяте от px в em подобен проблем няма)

+ И още един съвет при използването на css анимация – за да подобрите performance-а поставяйте началната стойност на атрибутът, който ще анимирате в inline стила на елемента. При webKit браузърите се забелязва очевидно подобрение на скоростта на първата анимация при първата анимация.

IE7 Подменю (а.к.а. фмл)

IE7, това чудо на съвременната (и не до там) АйТи гилдия, със сигурност е изяждало определено количество сън от доста уеб хора. Минавайки в сянката на creature-а IE6 откъм лошотии изглежда някак дружелюбен на пръв поглед. Но само на пръв.
Правейки wordpress сайт на клиент се сблъскахме с явното неодобрение от страна на IE7 към нашите падащи менюта. Гугълвайки ситуацията намерихме най-различни решения, като в някои случаи и самите примери за решение дори не работиха под IE7.
И решението:
Контейнера, който стои под менюто (#container) беше с position: relative; Сменяйки го на postion: static; в stylesheet-а за IE7 fixed the fuckin sht! (една хоризонтална черна линия отиде на майната си, та трябваше допълнително да я нагласяме, но това си беше в реда на нещата. )

Накратко:
В стила за IE7:

#container {
position: static;
}