WordPress quickie: Galéria sa zobrazuje len prihláseným užívateľom
Dnes sa s vami podelím o jeden problém, ktorý mi doslova nedal spať a ako vždy, dal sa vyriešiť niekoľkými riadkami kódu.
Jeden môj klient má na svojej WordPress stránke galériu obrázkov vygenerovaný cez shortcode gallery
. Zrazu sa prišlo na to, že bežným návštevníkom sa táto galéria nezobrazuje a vidí ju len admin a editor po prihlásení.
Sprvoti som si myslel, že to „dokafral“ niektorý z pluginov, no ani po zakázaní všetkých pluginov sa správanie nezmenilo. Nasledoval dlhý debg až do útrob WordPressu – samotný gallery shortcode WP_Query
, až som narazil na zaujímavé správanie.
Gallery shortcode si samozrejme podľa parametrov vytiahne všetky posts typu attachment so stavom inherit, volaním get_posts, ktorý obaľuje samotné WP_Query. Táto trieda obľauje všetko vyhľadávanie v postoch a prekladá do SQL. Na moje počudovanie si niekde v útrobách zmenila post_status
z inherit
na publish
, čo je ale pre post_type
attachment nezmysel a preto dotaz nevrátil žiadne výsledky. V prípade, že je prihlásený užívateľ, je post_status tiež zmenený na iný.
Isteže, robí to niektorý z pluginov, alebo dokonca téma samotná, no rýchle hľadanie, či sa niekde nejaká funkcia „nezakvačí“ na pre_get_posts, vrátilo nula výsledkov.
Tak som si urobil malý hack vo functions.php, ktorý celú situáciu vyriešil pomerne elegantne vzhľadom na časovú tieseň, v ktorej som bol. Hľa:
Problém je vyriešený. Či je to čisté riešenie alebo nie, nechám na vás.
Pridaj komentár