Új menüpont hozzáadása egy saját pluginhoz

Sziasztok!





Azt hiszem kezdem feladni ama próbálkozásomat hogy wp plugint készítsek. Talátam egy jó leírást a hivatalos wordpress honlapon egy új menüpont hozzáadásáról:





http://codex.wordpress.org/Adding_Administration_Menus#Sub-Menus





A leírás alapján létrehoztam egy nagyon egyszerű függvényt, és egy menüpontot, de valami mégsem működik, mert parse errorral elszáll. Mi lehet a hiba?





function uj_kateg()





{





print “

Teszt

”;





}





add_menu_page(‘teszt’, ‘teszt oldal’, ‘manage_options’, ‘my-top-level-handle’, ‘uj_kateg’);











A hibaüzenet pedig a következő: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in verseny.php on line 16 (ami az idézett kód utolsó sora)





Van valakinek valami ötlete hogy mi lehet a hiba? Biztos én csinálok valamit rosszul, nehezen tudom elképzelni hogy maga a leírás lenne rossz.

Ez így nem jó, mert kell egy add_action is, majd utána jöhetnek a függvények:











pl:















add_action('admin_menu', 'proba_menu');



function proba_menu() {



add_menu_page('Az oldal CÍME', 'ÚJ menüpont neve', 'manage_options', 'ez_lesz_az_url_neve', 'proba_options');



}



function proba_options(){



echo 'teszt';



}










  1. az add action ->itt rendelhetsz egy ADOTT eseményhez egy függvényt ->. Amelynek le kell futnia.


  2. function proba_menu() -> ezt a függvény fog meghívódni, amikor belépsz az adminisztrációs felületre, (add_action -ban van paraméterként)



    Itt adod meg a menüpont nevét, címét, slug-ot és végül rendelsz hozzá egy függvényt is, ami majd meghívódik, amikor rákattintanak (proba_options)






  3. A function proba_options() -függvény fut le, amikor rákattintasz az új menüdre…ugye ezt adtuk mehg az add_menu_page utolsó paramétereként







    Tehát ha rákattintasz az új menüre akkor kiírja: “teszt”





    add_action(‘admin_menu’, ‘proba_menu’);





    function proba_menu() {





    add_menu_page(‘Az oldal CÍME’, ‘ÚJ menüpont neve’, ‘manage_options’, ‘ez_lesz_az_url_neve’, ‘proba_options’);





    }





    function proba_options(){





    echo ‘teszt’;





    }
















  4. az add action ->itt rendelhetsz egy ADOTT eseményhez egy függvényt ->. Amelynek le kell futnia.




  5. function proba_menu() -> ezt a függvény fog meghívódni, amikor belépsz az adminisztrációs felületre, (add_action -ban van paraméterként)





    Itt adod meg a menüpont nevét, címét, slug-ot és végül rendelsz hozzá egy függvényt is, ami majd meghívódik, amikor rákattintanak (proba_options)










  6. A function proba_options() -függvény fut le, amikor rákattintasz az új menüdre…ugye ezt adtuk mehg az add_menu_page utolsó paramétereként











    Tehát ha rákattintasz az új menüre akkor kiírja: “teszt”

A te példád esetén így fog festeni a plugin:















<?php



/*



Plugin Name: blabla



Plugin URI: valama.hu



Description: almenu próba



/







add_action(‘admin_menu’, ‘proba_menu’);



function proba_menu() {



add_menu_page(‘teszt’, ‘teszt oldal’, ‘manage_options’, ‘my-top-level-handle’, ‘uj_kateg’);



}



function uj_kateg()



{



print “

Teszt

”;



}



?>











Látom, verseny.php t ír ki, tehát a plugins könyvtárba kell egy verseny könyvtár, és abban legyen a verseny.php





<?php





/






Plugin Name: blabla





Plugin URI: valama.hu





Description: almenu próba





*/











add_action(‘admin_menu’, ‘proba_menu’);





function proba_menu() {





add_menu_page(‘teszt’, ‘teszt oldal’, ‘manage_options’, ‘my-top-level-handle’, ‘uj_kateg’);





}





function uj_kateg()





{





print “

Teszt

”;





}





?>

















Látom, verseny.php t ír ki, tehát a plugins könyvtárba kell egy verseny könyvtár, és abban legyen a verseny.php

Köszi szépen, így már ragyogóan működik. :slight_smile: Jól sejtem, hogyha a létrehozott főmenühöz almenüket szeretnék hozzáadni az ugyanezen az elven működik, csak értelemszerűen más függvényt kell használjak?


'oaron' wrote:




....csak értelemszerűen más függvényt kell használjak?








Igen. A legelső hozzászólásodban lévő link pont olyan oldalra vezet, ahol láthatóak ezek a függvények. Így ha almenüt szeretnél, akkor add_submenu_page() függvényt kell használni.





Az a lényege, hogy az add_submenu_page() függvény első paramétere határozza meg, hogy melyik menüpont alá kerüljön az almenü.





Vagy betehetsz meglévő menübe is almenüt, csak az első paraméterben kell megmondani, hová szeretnéd. (parent_slug, azaz a szülő menüpont url je kerül ide)





Pl: az eszközök menüpont alá egy új menü:







<?php

/*

Plugin Name: blabla

Plugin URI: valama.hu

Description: almenu próba

*/



add_action('admin_menu', 'proba_menu');

function proba_menu() {

add_submenu_page( 'tools.php', 'Page title', 'Almenü neve', 'manage_options', 'almenu_url', 'almenufuggveny');

}

function almenufuggveny()

{

print "Eszközök új menü";

}

?>





Itt a parent slug a tools.php, ez a fájl szolgálja ki a menüt. De ha rákattintasz az eszközök menüre, akkor látod is, hogy a vége: tools.php. Tehát ilyen rákattintással már meg lehet állapítani, hogy mi kell az add_submenu_page első paraméterébe, ha új almenüt veszel fel az egyik meglévő alá.



Ott a WP oldalán is felsorolják: (angolul van, de azért értehtő)





For Dashboard: add_submenu_page('index.php',...)

For Posts: add_submenu_page('edit.php',...)

For Media: add_submenu_page('upload.php',...)

...




<?php


/*


Plugin Name: blabla


Plugin URI: valama.hu


Description: almenu próba


*/





add_action('admin_menu', 'proba_menu');


function proba_menu() {


add_submenu_page( 'tools.php', 'Page title', 'Almenü neve', 'manage_options', 'almenu_url', 'almenufuggveny');


}


function almenufuggveny()


{


print "Eszközök új menü";


}


?>








Itt a parent slug a tools.php, ez a fájl szolgálja ki a menüt. De ha rákattintasz az eszközök menüre, akkor látod is, hogy a vége: tools.php. Tehát ilyen rákattintással már meg lehet állapítani, hogy mi kell az add_submenu_page első paraméterébe, ha új almenüt veszel fel az egyik meglévő alá.





Ott a WP oldalán is felsorolják: (angolul van, de azért értehtő)







For Dashboard: add_submenu_page('index.php',...)

For Posts: add_submenu_page('edit.php',...)

For Media: add_submenu_page('upload.php',...)

...




For Dashboard: add_submenu_page('index.php',...)


For Posts: add_submenu_page('edit.php',...)


For Media: add_submenu_page('upload.php',...)


...