Passing Class Method as a Call-Back Function in WordPress
I found that there was no need to create a static method at all.
add_action('admin_menu', array(new AdminPageClass, "admin_menu"));class AdminPageClass { function admin_menu() { add_options_page( 'Sample Admin Page Class', 'Sample Admin Page Class', 'manage_options', 'sample_admin_page_class', array(&$this, 'admin_page')); } function admin_page() { ?> <div class="wrap"> <h1>Hi there</h1> <p>Hello World!</p> </div> <?php } }
Create a static method which returns the array containing the class instance and the method name.
/* Plugin Name: static method callback demo*/add_action('admin_menu', AdminPageClass::_admin_menu());class AdminPageClass { static function _admin_menu() { $class_name = get_class(); $classinstance = new $class_name(); return array(&$classinstance, "admin_menu"); } function admin_menu($instantiate=false) { add_options_page( 'Sample Admin Page Class', 'Sample Admin Page Class', 'manage_options', 'sample_admin-page_class', array(&$this, 'admin_page')); } function admin_page() { ?> <div class="wrap"> <h1>Hi there</h1> <p>Hello World!</p> </div> <?php }}