2013-11-22 63 views
0

我想了解爲什麼我不能在自己的類中使用[$ this,'function']。

這工作:

的init.php

if (is_admin()) 
{ 
    require (dirname (__FILE__) . '/inc/admin/Admin.php'); 
    add_action('admin_menu', ['Mango\Admin', 'adminMenu']); 
} 

/inc/admin/Admin.php - 版本1(工作)

<?php namespace Mango; 

class Admin 
{ 
    public function adminMenu() 
    { 
    //this is the main item for the menu 
    add_menu_page(
     'Mango Settings', //page title 
     'Mango Settings', //menu title 
     'manage_options', //capabilities 
     'mango-settings', //menu slug 
     [ 'Mango\Admin', 'settingsPage' ] // LOOK HERE ******* 
    ); 
    } 

    public function settingsPage() 
    { 
     echo 'This is a test'; 
    } 
} 

/INC/admin/Admin.php - 版本2(不工作)

<?php namespace Mango; 

class Admin 
{ 
    public function adminMenu() 
    { 
    //this is the main item for the menu 
    add_menu_page(
     'Mango Settings', //page title 
     'Mango Settings', //menu title 
     'manage_options', //capabilities 
     'mango-settings', //menu slug 
     [ $this, 'settingsPage' ] // LOOK HERE ******* 
    ); 
    } 

    public function settingsPage() 
    { 
     echo 'This is a test'; 
    } 
} 

錯誤消息:Warning: call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object in /.../wp-includes/plugin.php on line 429

我真的不明白,爲什麼我不能用add_menu_page鉤註冊[ $this, 'settingsPage' ]。當然,工作版本1正在創建Mango \ Admin類的第二個副本?

請問有誰能爲我揭開一些光明嗎?

回答

0

也許有點晚回答,但它可能會幫助別人;

如果函數是它應該是 作爲數組引用($此,「函數名」)

http://codex.wordpress.org/Function_Reference/add_menu_page

class Admin 
{ 
    public function adminMenu() 
    { 
    //this is the main item for the menu 
    add_menu_page(
     'Mango Settings', //page title 
     'Mango Settings', //menu title 
     'manage_options', //capabilities 
     'mango-settings', //menu slug 
     array($this, 'settingsPage') // LOOK HERE ******* 
    ); 
    } 

    public function settingsPage() 
    { 
     echo 'This is a test'; 
    } 
} 
插件內的類的成員
相關問題