Hogyan manipuláld az RSS feededet?
Az RSS-t manapság egyre kevésbé használjuk, pedig nagyon hasznos: ha például WordPress oldalakról szeretnéd kinyerni a bejegyzéseket, akkor tökéletes megoldás lenne - egészen addig, amíg el nem kezded használni és bele nem futsz a következő problémákba:
- szeretnél valamilyen egyedi szöveget minden bejegyzés végéhez fűzni,
- több bejegyzésre van szükséged, mint amit a jelenlegi beállítás alapján a WordPress generál,
- a bejegyzéshez tartozó egyedi mezőkre van szükséged.
Minden esetben szükségünk lesz egy php
fájlra az mu-plugins mappában, így hozzunk létre egyet, mondjuk alter-rss-feed.php
néven, és nézzük szépen sorban ezeket az eseteket!
Egyedi szöveg a bejegyzések végére
Ez viszonylag egyszerű lesz: a koncepció itt az, hogy a the_content
"esemény" megtörténte esetén elkapjuk a $content
változót (ami maga a tartalom), és a végéhez hozzáfűzünk valamilyen szöveget:
Mentést követően ezt a szöveget minden bejegyzés szövegének végéhez automatikusan hozzáfűzi a rendszer, de csak a feedekben.
Megjelenített bejegyzések számának növelése
Az RSS feedben megjelenített bejegyzések száma a Beállítások => Olvasás
menüpontban beállított értékek alapján alakul. Előfordulhat olyan eset viszont, amikor ennek a megemelése nem ajánlott alapértelmezetten (például nagyon sok bejegyzés van az oldalon, ezért az összes feliratkozott RSS olvasó rászabadítása nagyon leterhelné az oldalt), viszont bizonyos körülmények fennállása esetén azt szeretnénk, ha mégis megjelenne az összes bejegyzésünk.
A fenti snippet szintén nem túl bonyolult: feed esetén ha van limit paraméter az URL-en, melynek értéke unlimited (?limit=unlimited
), akkor a beállított érték helyett 999999 darab bejegyzés jelenik meg, vagyis nagy eséllyel az összes bejegyzésünk. Innentől kezdve tehát nyugodtan használhatunk egy sima RSS importálót a bejegyzések mozgatására, bármilyen tartalomkezelőt is használnánk.
Egyedi mezők hozzáadása a feedhez
A "baj" az az egyedi mezőkkel, hogy ezeket a WordPress nem csapja hozzá az RSS feedhez, így azokat csak az adatbázisból, "bonyolult" SQL utasításokkal kinyerve tudjuk exportálni - vagy nem? Nem: nézzük az alábbi kódot!
Ez nem túl szép kód (nem szeretem, ha a markup keveredik PHP-val), de hatékony kód olyan értelemben, hogy elérjük vele a célunkat. Nem tesz mást, mint lekéri a _yoast_wpseo_opengraph-image
mező adott bejegyzéshez tartozó értékét, majd e köré "épít" egy tag-et, a kimenete valami ilyesmi lesz:
Ez a részlet minden bejegyzés elem "adattömbjében" megjelenik, így most már beállíthatjuk az RSS importálónkat, hogy a mezőben található URL-t használja a kép letöltéséhez/beállításához.
(Egy kis magyarázat ehhez: az oldal, ahonnan importálnom kellett volna, nem használ kiemelt képeket, csak a Yoast-ban beállítottakat. Ahhoz, hogy ezekhez az adatokhoz mégis hozzájussak, volt szükségem a fenti kódrészletre. Miután megírtam ezeket, egyszerűen csak át kellett küldenem a megrendelőmnek, egy linkkel az mu-plugins mappás bejegyzésemhez, hogy telepíteni tudja a snippeteket és folyhasson tovább a munka.)
Ez a snippet elsőre nem tűnik olyan hasznosnak, mint például az, amivel 54 eurót tudsz spórolni, de tekints erre inkább úgy, mint egy LEGO kockára: egy nagyobb egész részeként, annak összetevőjeként tud kiválóan hasznosulni.