frissítve: 2022. 05. 15.
Olvasási idő: 4 perc
Plugout

Oszlopok hozzáadása WordPress-ben a bejegyzéslistázó nézetekhez

Adj egyedi oszlopokat a WordPress admin felületének bejegyzéslistázó nézeteihez - ha bizonyos mezők tartalmát a bejegyzés megnyitása nélkül is látni szeretnéd, ez a snippet neked való.


Több esetben is szükséged lehet erre a lehetőségre - nézzünk is két elképzelt lehetőséget:

  • szeretnéd, ha mindegyik bejegyzésedhez tartozó képet anélkül tudnál megnézni (vagy ellenőrizni, hogy van-e hozzá kiemelt kép választva), hogy megnyitnád a bejegyzésszerkesztő felületet,
  • valamilyen egyedi mező tartalmát szeretnéd kiíratni egy újabb oszlopban.

Először is nézzük, hogy hogyan tudod az első esetben felmerült igényt kielégíteni - hozz létre egy fájlt az mu-plugins mappában, custom-columns-for-posts.php néven, az alábbi tartalommal:

Mentés és frissítés után láthatod, hogy a Bejegyzés menüpont alatti nézetben egy újabb oszlop jelent meg - egyelőre érdemi tartalom nélkül.

Megjegyzés: ha ugyanezt egy custom post type esetében szeretnéd elérni, cseréld le a manage_posts_columns hook-ot a manage_[post_type]_posts_columns-ra, ahol [post_type] a custom post type neve. Bővítsük a fenti kódot az alábbira:

A második függvény felel az érdemi tartalommal való "feltöltésért": amikor az oszlopokat tartalommal tölti fel a WordPress és a featured_image nevű oszlophoz ér (így neveztük el az oszlopunkat az előző függvényben), akkor ott kiíratja a get_the_post_thumbnail() függvény visszatérési értékét - ami éppen a bejegyzés kiemelt képének <img> tagje lesz. Megjelent a kép, ügyesek vagyunk! :)

Menjünk tovább a következő esetünkre, ahol valamilyen egyedi mező tartalmát szeretnénk kiíratni az oszlopban. Nagyon sokat nem kell változtatnunk a fenti kódon, csak az "oszlopban meghívott" függvényt kell lecserélnünk, ebben az esetben a get_post_meta()-ra, és a MEZŐ_NEVE helyett megadni a mezőnk nevét:

Ha mindent jól csináltunk, megjelent a bejegyzéshez tartozó mező értéke az oszlopban.

Gratulálok - megint kiváltottál egy plugint!