redirect pluginben

Sziasztok!











Van egy pluginem, amiben a felhasználónak be kell lépnie egy elzárt területre, de nem WP felhasználóként, hanem egy saját egyedi azonosítóval és kóddal.











Ezt az egészet egy plugin végzi, amit én írtam, és úgy néz ki, hogy ha elhelyez az admin egy shortcode -ot egy poston, oldalon, és akkor ott jelenik meg a beléptetés, vagy a beléptetés utáni tartalom.











Legyen mondjuk az oldalunk neve, ahova a shortcode -ot betette /myplugin/.





Ok, amikor ide jön a user, ellenőrizzük, be van -e lépve. Ha nincs, mutatom neki a beléptetés oldalt.





Azonosító: …





Kód: …











beírja, és jót adott meg, ez esetben redirectelem ide:





/myplugin/?op=showMyTemplate&id=[azonosito]











Fasza. Mutatom is neki a tartalmat.





Ezek után, ha a user elnavigál valahova máshova, meg néz egy két posztot, és visszamegy a /myplugin/ oldalra, akkor ugye nem kell beléptetnem már mégegyszer, hiszen be vagyon lépve, viszont nem derül ki, hogy mi az id. Természetesen SESSION-ben le van tárolva.





Azonban, arra nem játszhatok, hogy ha a sessionben le van tárolva, akkor mutatom neki az oldalt, hiszen akkor minden más oldalon is mutatnám.











Ezért, nekem figyelnem kell, hogy a /myplugin/ oldalon vagyunk -e.











És most jön a probléma. A pluginemben el kéne érnem vagy a global $post -ot, vagy a get_permalink() fügvvényt, hogy tudjam, hol vagyunk. És tádám! Suck. Ugyanis, sem a __construct() -ban, sem az init -ben ezek nem elérhetőek.











Érdekes, hogy a wp codex azt írja, hogy az init az után hívódik meg, miután a full wp betöltődött, de még nem volt kimenet az oldalon.





Nos ez nem igaz, vagy lehet, de az biztos, hogy ott a fentieket nem érem el.











Ezért azt a megoldást választottam, hogy:





add_action('template_redirect’, array($MySystem, ‘loaded’));

Itt már elérem a global $post -ot is, és a get_permalinket is, így ezt csinálom:

[code=php:v0wu2wtg]public function loaded() {


global &
#036;post;


if ($_SESSION[“MyPlugin_loggedIn”] && preg_match(’/\[MyShortCode\]/i’, $post->post_content)) {


$link = get_permalink();


if (!preg_match($pattern = “/(\?|&)op=showMyTemplate/i”, $_SERVER[“REQUEST_URI”])) {


if (preg_match($pattern = “/\?/”, $_SERVER[“REQUEST_URI”])) {


$link .= “&op=showMyTemplate&id=” . $_SESSION[“longId”];


} else {


&
#036;link .= “?op=showMyTemplate&id=” . $_SESSION[“longId”];


}


redirect($link); //Saját függvény


}


}


}

Működik szépen, mégis, nem vagyok biztos benne, hogy a template_redirect hook a megfelelő számomra.

Hiába olvasgattam át a filters and hooks szekciót, nem találtam olyat, ami azt csinálná, hogy már az ég világon minden fullra be van töltve, elérhető az összes wp függvény / változó, de még nincs kimenet, hogy redirectelni tudjak.

Esetleg valaki tudna segíteni, mire kell hookolnom?[code=php:v0wu2wtg]add_action('template_redirect’, array($MySystem, ‘loaded’));











Itt már elérem a global $post -ot is, és a get_permalinket is, így ezt csinálom:





public function loaded() {


global &
#036;post;


if ($_SESSION[“MyPlugin_loggedIn”] && preg_match(’/\[MyShortCode\]/i’, $post->post_content)) {


$link = get_permalink();


if (!preg_match($pattern = “/(\?|&)op=showMyTemplate/i”, $_SERVER[“REQUEST_URI”])) {


if (preg_match($pattern = “/\?/”, $_SERVER[“REQUEST_URI”])) {


$link .= “&op=showMyTemplate&id=” . $_SESSION[“longId”];


} else {


&
#036;link .= “?op=showMyTemplate&id=” . $_SESSION[“longId”];


}


redirect($link); //Saját függvény


}


}


}

Működik szépen, mégis, nem vagyok biztos benne, hogy a template_redirect hook a megfelelő számomra.

Hiába olvasgattam át a filters and hooks szekciót, nem találtam olyat, ami azt csinálná, hogy már az ég világon minden fullra be van töltve, elérhető az összes wp függvény / változó, de még nincs kimenet, hogy redirectelni tudjak.

Esetleg valaki tudna segíteni, mire kell hookolnom?[code=php:v0wu2wtg]public function loaded() {


global &
#036;post;


if ($_SESSION[“MyPlugin_loggedIn”] && preg_match(’/\[MyShortCode\]/i’, $post->post_content)) {


$link = get_permalink();


if (!preg_match($pattern = “/(\?|&)op=showMyTemplate/i”, $_SERVER[“REQUEST_URI”])) {


if (preg_match($pattern = “/\?/”, $_SERVER[“REQUEST_URI”])) {


$link .= “&op=showMyTemplate&id=” . $_SESSION[“longId”];


} else {


&
#036;link .= “?op=showMyTemplate&id=” . $_SESSION[“longId”];


}


redirect($link); //Saját függvény


}


}


}


















Működik szépen, mégis, nem vagyok biztos benne, hogy a template_redirect hook a megfelelő számomra.





Hiába olvasgattam át a filters and hooks szekciót, nem találtam olyat, ami azt csinálná, hogy már az ég világon minden fullra be van töltve, elérhető az összes wp függvény / változó, de még nincs kimenet, hogy redirectelni tudjak.











Esetleg valaki tudna segíteni, mire kell hookolnom?