我试着让我的WordPress插件工作,但我站在墙前。·
我的问题是,如果我最终给我的班级GBL_Extras
打电话,则会发生错误:
Catchable fatal error: Object of class GBL_Extras could not be converted to string in /wp-includes/functions.php on line 1592
我不明白为什么会这样。如果我删除add_submenu_page方法,该类正确呈现,但我没有在那里做错
如果阅读了许多关于同样问题的其他文章,但我无法将这个错误的问题适应我的项目。
有人能在黑暗中带点光吗?
我的代码:
<?php
// don't load directly
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
if ( ! class_exists( 'GBL_Extras' ) ) {
class GBL_Extras {
private static $_instance;
private function __construct() {
// Add hooks
add_action( 'network_admin_menu', array( $this, 'init' ));
}
public static function getInstance() {
if ( ! ( self::$_instance instanceof self ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function init() {
add_menu_page( 'Extrawünsche', 'Extrawünsche', 'manage_options', 'gbl_extras_settings');
add_submenu_page( 'gbl_extras_settings', 'Alle Extrawünsche', 'Alle Extrawünsche', 'manage_options', array( $this, 'backendRenderExtras'));
add_submenu_page( 'gbl_extras_settings', 'Kategorien', 'Kategorien', 'manage_options', 'gbl_extras_categories', array( $this, 'backendRenderCategories'));
}
public function backendRenderExtras() {
?>
<div class="wrap">
<div id="icon-users" class="icon32"><br/></div>
<h2>Extrawünsche</h2>
</div>
<?php
}
public function backendRenderCategories() {
?>
<div class="wrap">
<h2>Kategorien</h2>
</div>
<?php
}
}
$gbl_manager = GBL_Extras::getInstance();
}
?>
答案 0 :(得分:1)
您的第一个add_submenu_page()
调用看起来缺少$menu_slug
参数。比较两个电话的结尾:
'manage_options', array( $this, 'backendRenderExtras'));
和
'manage_options', 'gbl_extras_categories', array( $this, 'backendRenderCategories'));
第二个看起来是正确的。