Nahrazení podtržítek v názvu přílohy?

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Nahrazení podtržítek v názvu přílohy?

Zvolené téma obsahuje celkem 5 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  LuCaCZ a poslední změna je stará 12 let.

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

    LuCaCZ
    Participant

    Zdravím,

    dá se nějak automaticky např. přes add_filter() nahrazovat podržítka v názvu přílohy/mediálního souboru? Když mám třeba na blogu soubor “obrazek_0007.jpg” bude mít název “obrazek_0007”, chtěl bych aby se na stránce (resp. v galerii) zobrazoval název “obrazek 0007” hlavně v argumentu “title” v html tagu <img>. Jde to a jak? Děkuji.

    #11145

    Lukenzi
    Participant

    Teď po ránu mě nijak nenapadá žádný filtr, který by na toto byl použitelný, každopádně by to šlo vyřešit snadno v šabloně vzhledu. Ten titulek obrázku vypisuje nějaká funkce např.

    get_img_title();

    tak ji jednoduše vložím do PHP funkce str_replace(), která mi nahradí všechny znaky “_” za ” ” a hotovo :)

    str_replace('_', ' ', get_img_title());

    #11146

    admin
    Keymaster
    Web

    Lukenzi: Problém je hlavně v tom, že ten obrázek může být uživatelem také “natvrdo” vložen do příspěvku/stránky, takže není vypisován žádnou funkcí a musel by se ještě použít filtr image_send_to_editor.

    Ale jak tedy automaticky měnit titulek (title) přímo při nahrávání souboru? Bohužel jsem nenašel žádný jednoduchý filtr, např. pro funkci wp_insert_attachment(), pomocí které jsou data ukládána do databáze, takže se to bohužel musí udělat trochu oklikou. Využijeme akci add_attachment, která se spouští až po uložení všech dat do databáze, získáme automaticky vygenerovaný název, jednoduše upravíme pomocí funkce str_replace() a poté databázi aktualizujeme pomocí funkce wp_update_post(). Sice to zní složitě, ale je to jen pár krátkých řádků kódu:

    function separatista_upravit_nazev( $id ) {
    $soubor_id = get_post( $id );
    $title = $soubor_id->post_title;
    $title = str_replace( '_', ' ', $title );
    $upraveny_soubor = array();
    $upraveny_soubor['ID'] = $id;
    $upraveny_soubor['post_title'] = $title;
    wp_update_post( $upraveny_soubor );
    }
    add_action( 'add_attachment', 'separatista_upravit_nazev' );

    P.S. Nakonec jsem našel ještě plugin Format Media Titles, který to celé dělá automaticky a řeší i další drobnosti (velká a malá písmena, pomlčky a nejen podtržítka).

    #11147

    LuCaCZ
    Participant

    Moc díky, ten kousek kódu je parádni a dostačující. Je stejný jako v pluginu. Teď ještě vyřešit jak nahradit podtržítka v ostatních – dříve nahraných – souborech (cca 8200).

    Myslel jsem právě, že by se přepisovaly někde ve funkci, která převádí short tag [gallery] na html kód. “Jen” by se měnila proměnná $title(?) a vypisovala název bez podtržítek.

    #11148

    admin
    Keymaster
    Web

    Pokud jde pouze o převedení HTML ze zkráceného zápisu [gallery], tak to je vcelku jednoduché. Když potřebujete změnit pouze titulek obrázku, tak není třeba duplikovat celou funkci s pomocí filtru post_gallery, ale stačí jen využít faktu, že tam je volána funkce wp_get_attachment_link(), která následně volá wp_get_attachment_image() a kde už můžeme využít filtr wp_get_attachment_image_attributes. Příklad:

    function separatista_upravit_nazev_galerie( $attr ) {
    $attr['title'] = str_replace( '_', ' ', $attr['title'] );
    return $attr;
    }
    add_filter( 'wp_get_attachment_image_attributes', 'separatista_upravit_nazev_galerie' );

    Problémem je ale fakt, že to neřeší jiné výskyty obrázků na webu (pouze v galerii). Možná by bylo lepší projít skriptem všechny obrázky a automaticky všude nahradit podtržítka mezerami. Skript by proběhl pouze jednou a už by nemusel být pokaždé znovu zpracovávána předchozí funkce při každém zobrazení galerie.

    #11149

    LuCaCZ
    Participant

    Moc děkuji za vše, prozatím nechám add_action při uploadu a add_filter při zobrazování galerie. Těch samostatných obrázků na webu je minimálně, tak stačí úpravy v galerii. Později pak vyřeším script pro hromadnou úravu.

    Ještě jednou díky.

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

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

WordPress – novinky, návody a zajímavosti