有谁知道如何正确扩展此WP样板插件中的主管理类?
简化代码:
管理员/类插件名称-admin.php的
class Plugin_Name_Admin { ... }
(自定义)扩展类: 管理员/类插件名称管理员-custom.php
if ( ! defined( 'ABSPATH' ) ) exit;
if( ! class_exists('Plugin_Name_Admin') ) {
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-plugin-name-admin.php';
}
class Plugin_Name_Admin_Fields extends Plugin_Name_Admin {
// as a test I simply added an admin link
public function books_register_ref_page() {
add_submenu_page(
'edit.php?post_type=books',
__( 'Books Shortcode Reference', 'textdomain' ),
__( 'Shortcode Reference', 'textdomain' ),
'manage_options',
'books-shortcode-ref',
'books_ref_page_callback'
);
}
}
$fields = new Plugin_Name_Admin_Fields();
然后在里面 包括/类插件-name.php
我希望我可以使用以下钩子
$plugin_admin = new Plugin_Name_Admin( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( 'admin_menu', $plugin_admin, 'books_register_ref_page' );
但我得到了一些错误
call_user_func_array() expects parameter 1 to be a valid callback, class 'Plugin_Name_Admin' does not have a method 'books_register_ref_page' in...
我知道我可以通过使用它来解决这个问题:
$plugin_extended = new Plugin_Name_Admin_Fields( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( 'admin_menu', $plugin_extended, 'books_register_ref_page' );
问题是,我是否正确理解"Class X extend Main Class"
?我的目标是不在
class Plugin_Name_Admin { ... }
相反,我想将一些特定代码放在扩展主Plugin_Name_Admin
类的不同类中。
如果我在主类(Plugin_Name_Admin
)中有一个需要扩展类中的代码的函数,它应该开箱即用,而不首先重新定义扩展类。否则使用“Class X extend Main Class”?