Špatné řazení příspěvků podle abecedy

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Špatné řazení příspěvků podle abecedy

Zvolené téma obsahuje celkem 6 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  sjiamnocna a poslední změna je stará 3 roky, 6 měsíců.

Aktuálně je na stránce zobrazeno 7 příspěvků - 1. až 7. (z celkem 7)
  • Autor
    Příspěvky
  • #25502

    kuzmic11
    Participant

    Dobrý den,

    chtěl bych touto cestou poprosit o radu.

    Na webu se snažím vypisovat jednotlivé příspěvky podle abecedy na základě hodnoty v titulku příspěvku:

    <?php query_posts('category_name=ucitele-teorie&orderby=title&order=ASC'); ?>
    <?php while (have_posts()) : the_post(); $fimg = get_post_meta($post->ID, "thumb", TRUE); ?>
    <?php the_title() ?>
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>

    Jenomže pokud se podívám na výsledek na webu, tak příspěvky začínající např. na Š řadí před těmi začínající na S

    Pokusil jsem se nastavit ve wp-config.php:

    /** Database Charset to use in creating database tables. */
    define('DB_CHARSET', 'utf8');
    
    /** The Database Collate type. Don't change this if in doubt. */
    define('DB_COLLATE', 'utf8_czech_ci');

    tabulky v DB mám defaulně: utf8mb4_unicode_ci

    Celý web běží na Wedosu.

    Nevíte prosím kde dělám chybu?

    #25531

    sjiamnocna
    Participant
    Web

    Jo, to je věčný problém české diakritiky v programování – viz ASCII tabulka :D

    Na toto jsem taky narazil a hledal jsem a nenašel…
    Takže jsem se toho vzdal, a řadím příspěvky podle data ;)

    Napadá mně možný postup (podle mně, možná -určitě ;) – někdo má lepší), je načíst si přispěvky do proměnných (asi do pole array) a potom seřadit podle “vlastní” abecedy:

     $abc = str_split('AaÁáBbCcČčDďĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpQqRrŘřSsŠšTtŤťUuÚŮúůVvWwXxYyÝýZzŽz');
    
    $posts = array();
    foreach ($prispevky as $prispevek){ //... }

    Tento postup vřele nedoporučuju, nikdy jsem to nezkoušel :)

    #25575

    sjiamnocna
    Participant
    Web

    Trochu jsem zapátral, a pokud to trochu souvísí (jak ty příspěvky řadíte?), tak doporučuji toto téma, bohužel autor @peekaa se potom neozval, jak to chodí (nebo nechodí), ale je to možnost.

    Databáze by potom snad měla brát v ohled české znaky, tak jak je řadíme my (CČDĎEĚ…)

    #25596

    admin
    Keymaster
    Web

    @sjiamnocna: Takže pomocí str_split() vytvoříte pole, které bude obsahovat jednotlivá písmena abecedy a následně ho budete procházet a přiřazovat k němu příspěvky podle počátečního písmena? A co když budou na webu stovky příspěvků? Pokud tomu dobře rozumím, tak bude třeba projít pokaždé všechny, abyste získal správný výsledek?

    @kuzmic11: Podle mě by mělo stačit vlézt do databáze, do tabulky wp_posts, najít sloupeček post_title a změnit mu porovnávání z utf8mb4_unicode_ci na utf8mb4_czech_ci. Obávám se, že změna v souboru wp-config.php tomu nepomůže, ale můžete vykoušet. Ale @sjiamnocna má pravdu, že odkazované téma s tím určitě souvisí…

    #25616

    sjiamnocna
    Participant
    Web

    Uznávám, dost hrozné řešení, ale pokud není jiná možnost, asi by to bylo – minimálně na malém webu plynule – schopno fungovat :)
    _____

    Pardon.. Měl jsem tušení, že define('DB_COLLATE', ''); změní v DB i porovnávání

    #25617

    admin
    Keymaster
    Web

    @sjiamnocna: Moc se mi to řešení nezdá, ale nevím, nikdy jsem ho nikde neviděl v praxi (ani v podobě nějakého kódu) :-)

    Ano, DB_COLLATE by to mělo řešit, ale problém je v tom, že po změně v souboru wp-config.php až v nově vytvořených databázových tabulkách (či sloupcích). Ale už se na tom pracuje a oslovil jsem vývojáře, aby se podařilo tento problém eliminovat, tak by mohlo být toto nastavení DB_COLLATE přímo součástí české verze (tedy de facto překlad souboru wp-config-sample.php). Teď ještě řeším nejlepší možné nastavení, aby vše fungovalo, ale možná to už bude součástí české verze pro WordPress 4.4. Bohužel to zatím řeší problémy pouze pro nově instalované weby…

    #25618

    sjiamnocna
    Participant
    Web

    To by byl velký posun pro Češtinu na WP, a doufám, že to bude opravdu nějak fungovat :)

Aktuálně je na stránce zobrazeno 7 příspěvků - 1. až 7. (z celkem 7)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.