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

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *