Mal som fakt divnú požiadavku od klienta, chcel pri každom článku zverejniť čas čítania. Úplne useless, keďže ja napr. prečítam Bibliu za tri hodiny a moja babka za toľko neprečíta ani leták z Lidlu.
Každopádne, chceli to, tak to majú. A teraz ti ukážem, ako na to.
function reading_time() {
$content = get_post_field( 'post_content');
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 260);
$timer = __(' min čítania', 'lava');
$totalreadingtime = $readingtime . $timer;
return $totalreadingtime;
}
add_shortcode('lava_reading_time', 'reading_time');
Prvé, čo potrebujeme urobiť, je načitať si obsah článku a zistiť, koľko slov obsahuje. To sa nachádza na prvých dvoch riadkoch.
Funkcia get_post_field môže prijmať ako druhý parameter ID článku, pokiaľ ho tam však nedáš, aplikuje sa tzv. current query, čiže sa do článku dotiahne aktuálne post_id. Čo nám vyhovuje, keď chceme zobraziť tento useless údaj napr. na zozname článkov (inak by sme tam nejakým obdivuhodným spôsobom museli doťahovať ešte aj post_id).
Na riadku 4 si získaný počet slov vydelíme číslom 260-300, to je štandardne počet slov, čo je bežný človek schopný prečítať za minútu.
Na riadku č. 5 som si vložil vlastnú prekladovú funkciu, lebo tento projekt bol multijazyčný. Tam si napíš text, aký chceš. Ak nepotrebuješ multilang, tak celé __() vyhoď het a do apostrofov daj svoj string (aj s medzerou).
Na riadku 6 to už len spojíme do jedného a na riadku 7 vrátime ako výstup funkcie.
Na riadku 9 pridáme shortcode. A kde budeš potom chcieť zobraziť tento údaj, tak proste hodíš shortcode [lava_reading_time]