Bejegyzés szerkesztésnél kategória lista

Üdv











Próbáltam keresgélni, majd átnéztem a megjelenítés, sablonok rész összes topicját. Csekély 13 oldal. ( na nem mindbe néztem bele ). S ez után még az Általános kérdések első 10 oldaláig is eljutottam, mikor már meguntam, és gondoltam most már muszáj kérdeznem. Mire jött egy isteni szikra, hogy még valamit megpróbálok. És bevált. Ezért nem a kérdést, hanem a megoldást osztanám meg.











Az alap probléma az volt, hogy létrehoztam sok kategóriát. Alkategóriákkal. Amikor létrehoztam a bejegyzést, remekül megjelent a kategória fa, és elküldtem a bejegyzést a kiválasztott kategóriába. Egy ideje nem is nagyon néztem, mert baj volt a tárhelyszolgáltatóval, és csak most váltottam szolgáltatót. Gondoltam folytatom a munkát, de láttam, hogy a lista elején szépen ott van az az útvonal, amibe a postomat elhelyeztem. Szépen ki is voltak jelölve. De tévesen adtam meg a kategóriát, ezért át akartam helyezni. És néztem, hogy alatta az összes kategória és alkategória egyetlen egy lista. Semmi behúzással. Fogalmam sem volt, hogy az azonos nevű kategóriákból melyik az alkategória. És melyik a fő. Csak sejthettem, mert nagyjából a sorrend az stimmelt. De ez így nagyon nem volt jó.











A wp-admin/includes/template.php fájlig sikerült eljutnom ( netbeans-el nyomoztam ki a függvényhívásokat és deklarációkat. )





Abban ez áll a wp_category_checklist-ben az 529. sorban ( nálam. De ±1 sor belefér. )



Code:



// Put checked cats on top

echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args));

// Then the rest of them

echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args));





Ahol az első echo utáni függvényhívással kilistázza azon kategóriákat, amibe beletartozik a bejegyzés.


A második függvényhívás pedig az összes többit. Érdekes módon akkor nem omlott össze a szerkezet, ha egy másik főkategóriát választottam. Csak akkor, ha egy alkategóriát.





Na most mivel az array-ben az első elem a listázandó kategóriák, a második a mélység beállítása ha minden igaz, az $args pedig sok sok egyéb paraméter egy tömbben, amit nem volt már kedvem végigkövetni, a következőt próbáltam ki:





A fenti idézett kódban egyszerűen a két listázandó kategória listát egyesítettem. Kikommenteltem a fenti kódrészletet, és ezt írtam helyette:


Code:

echo call_user_func_array(array(&$walker, 'walk'), array(array_merge($checked_categories,$categories), 0, $args));








Most pontosan úgy listáz, ahogy akarom. Kijelölve maradnak az aktuális érintett kategóriák, de megmarad a szerkezet is.





Viszont ha már itt vagyok, hadd kérdezzem meg, lett-e volna más megoldás is. Mert sosem szeretek egy kész rendszert átírni. Egy frissítéskor minden visszaállhat és az sem biztos, hogy emlékszem még miket módosítottam.