Shortcode – kurzy české koruny
Potřebujete ve WordPressu vypisovat cenu v několika měnách? Pak vám přijde vhod dnešní návod na shortcode, který kurzy bere přímo od České národní banky.
Celé to funguje velmi jednoduše. Pomocí cronu se do systému nahrávají každou hodinu nejnovější data z cnb.cz a nahrají do databáze WordPressu. Samotné vypsání na webu pak probíhá pomocí shortcode mena, kde si nastavíte jakou částku na jakou měnu převést.
Nejdříve ale k samotnému scriptu. První částí je zmiňovaný cron a parsování dat z čnb:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
add_action('cron_hodina', 'nactiKurzy'); function crn_activation() { if (!wp_next_scheduled('cron_hodina')) { wp_schedule_event(time(), 'hourly', 'cron_hodina'); nactiKurzy(); } } add_action('wp', 'crn_activation'); function nactiKurzy() { $meny = explode("\n", file_get_contents('http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt')); unset($meny[0]); unset($meny[1]); $data = array(); foreach ($meny as $mena) { $parametry = explode("|", $mena); if ($parametry[3]) { $data[$parametry[3]]['pocet'] = $parametry[2]; $data[$parametry[3]]['kurz'] = str_replace(',', '.', $parametry[4]); } } if ($data) update_option('kurzy', $data); |
Tím se dostanou potřebné kurzy do databáze. Shortcode vypadá následovně:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function mena_func($atts) { extract(shortcode_atts(array( 'castka' => 1, 'z' => '', 'do' => 'CZK', 'desetiny' => 2 ), $atts)); $return = ""; $castka = str_replace(',', '.', $castka); $meny = get_option('kurzy'); if ($do == 'CZK' and $z == 'CZK') $return = $castka; elseif ($do == 'CZK') { $kurz = $meny[$z]['kurz']; $pocet = $meny[$z]['pocet']; $return = $kurz * ($castka / $pocet); } elseif ($z == 'CZK') { $kurz = $meny[$do]['kurz']; $pocet = $meny[$do]['pocet']; $return = $castka / ($kurz / $pocet); } return number_format($return, $desetiny, ',', ' '); } add_shortcode('mena', 'mena_func'); |
Parametry:
z – jediný povinný parametr, určuje z které měny se převádí
do – parametr do naopak určuje, do které se převádí, ve výchozím stavu je nastaven na CZK, mějte na paměti, že alespoň jeden z nich musí být česká koruna
castka – částka, která se má převádět, ve výchozím stavu 1
desetiny – kolik desetinných míst se má zobrazit
Například [mena z=CZK do=USD castka=1000 desetiny=1] převede 1000 korun na dolary a vypíše s jedním desetinným místem.
Napsat komentář