Autor Zpráva
jakre
Profil
Zdravím,
ve WordPressu používám toto: <?php site_last_updated('j. F Y') ?>. Ačkoliv je název měsíce v češtině, není vyskloňovaný.

Příkladem požadovaného výstupu je 20. ledna 2016. Tuším, že by se dal dle čísla měsíce (nahrazení "F" za "n") ze seznamu zobrazit jeho vyskloňovaný název.

Otázka tedy zní, jakou funkci mám využít?
Keeehi
Profil
A jaká je definice funkce site_last_updated? Ve standardním kódu wordpressu ji nemohu najít. Nejblíže k tomu je asi the_modified_time()
jakre
Profil
Keeehi:
Ano, ve standartním kódu WP není. Příkládám ji zde, i když není podstatná:

function site_last_updated($d = '') {
    $recent = new WP_Query("showposts=1&orderby=modified&post_status=publish");
    if ( $recent->have_posts() ) {
        while ( $recent->have_posts() ) {
            $recent->the_post();
            $last_update = get_the_modified_date($d);
        }
        echo $last_update;
    }
    else
        echo '';
}
Keeehi
Profil
jakre:
Ale ona je podstatná, protože si podle ní musíš vytvořit vlastní. protože to prímo vypisuje. Šlo by to sice odchytit, ale je mnohlem lepší si podle toho vytvořit vlastní.

function czech_site_last_updated() {
    $czechMonths = array(1=>"ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince");
    $recent = new WP_Query("showposts=1&orderby=modified&post_status=publish");
    if ( $recent->have_posts() ) {
        while ( $recent->have_posts() ) {
            $recent->the_post();
            $last_update = get_the_modified_date('U', '', '', false);
        }
        echo date('j. ', $last_update).$czechMonths[date('n', $last_update)].date(' Y', $last_update);
    }
}

Netestoval jsem to, ale mělo by to fungovat
jakre
Profil
Keeehi:
Děkuji, funguje to, ale je to zjednodušené. Ignoruje to totiž vše uvnitř czech_site_last_updated('...').
Keeehi
Profil
Samozřejmě, že to zjednodušené je. Protože čeština je velmi komplexní. Kdyby se to mělo řídit podle parametru, muselo by to být mnohem složitější. Například pro parametr j. F Y by to mělo vypsat 20. ledna 2016, pro F Y ale leden 2016.
Musely by se tedy prozkoumat všechny variace, zjistit pravidla, jak se čeština chová a pak na základě toho parsovat vstupní parametr a volit správný tvar.
jakre
Profil
Keeehi:
To je zas zbytečně složité. Stačilo by v konečném vysledku nahradit číslo měsíce za vyskloňovaný měsíc. Nevím, jak to zrealizovat, ale tuším, že něco podobného určitě vytvořit půjde.
Keeehi
Profil
jakre:
za vyskloňovaný měsíc.
Problém je právě to vyskloňovaný. Jak z toho parametru určíš pád. Jak jsem ukázal, může to být první i druhý. Možná i další na které jsem zatím nepřišel. Musela by se provést pořádná analýza.
jakre
Profil
Keeehi:
Asi jsme se špatně vyjádřil, omlouvám se. V tomhle případě mě zajímá pouze druhý pád, jak jsem uváděl v [#1], tudíž je realizace mnohem méně náročná a postačí zřejmě nějaká jednoduchá funkce.

Neřešil bych to, protože lze výstup upravit ve funkci. Koneckonců ona ta jednoduchost nikomu nevadí, protože funkci nikdo neuvidí.


Za řešení dotazu tedy považuji příspěvek [#4].

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: