我有一个注册类Skizzar_Admin_Theme_Options的文件,该类中有以下3个函数(以及其他函数):
static function get_saved_option( $option_slug = '', $user_role = '', $include_user_meta = true, $network = false ) {
$option_info = self::get_option_info( $option_slug );
// Incompatible arguments
if ( ! $option_slug || is_null( $option_info ) ) {
return null;
}
// Prepare saved options
$options = self::get_saved_options( $include_user_meta, $network );
// Return role-based value
if ( $option_info['role-based'] ) {
// Get user role
if ( ! $user_role ) {
$user_role = Skizzar_Admin_Theme_User::get_user_role();
$user_role = is_null( $user_role ) ? '' : $user_role;
}
// Return role-based value if it exists, or the default for new roles
return isset( $options[ $option_slug ][ $user_role ] ) ? $options[ $option_slug ][ $user_role ] : $options[ $option_slug ]['sat-default'];
}
// Return
return $options[ $option_slug ];
}
// Shortcut to get a network option
static function get_saved_network_option( $option_slug = '' ) {
return self::get_saved_option( $option_slug, '', true, true );
}
// Return global values if single site dettings are disabled
static function get_skizzar_admin_option() {
$is_network_only = ( is_multisite() && Skizzar_Admin_Theme_Options::get_saved_network_option( 'enable-global-settings' ) ) ? 'get_saved_network_option' : 'get_saved_option';
return $is_network_only;
}它们是,get_saved_option(),它返回从单个wordpress站点保存的插件选项,get_network_saved_option(),如果是多站点安装,它从网络管理员返回插件选项。还有get_skizzar_admin_option(),它检查站点是否为多站点,并且用户已选择使用全局设置而不是单个站点设置,然后根据结果返回'get_saved_option‘或'get_network_saved_option’。
为了在我的插件中调用其他文件中的类,我使用:
Skizzar_Admin_Theme_Options::get_skizzar_admin_option( [option-slug] )例如,我可以用它去掉工具栏中的某个菜单项:
if ( Skizzar_Admin_Theme_Options::get_skizzar_admin_option( 'hide-toolbar-updates' ) ) {
$wp_toolbar->remove_node( 'updates' );
}这使用'get_skizzar_admin_option‘来检查我们是否应该查看网络保存的选项,还是单站点选项。
从我看到的情况来看,我的方法在所有文件中都有效,只有一个文件除外。奇怪的是,在这个文件中,我可以使用:
Skizzar_Admin_Theme_Options::get_saved_option()或
Skizzar_Admin_Theme_Options::get_network_saved_option它工作得很好,但是当我使用
Skizzar_Admin_Theme_Options::get_skizzar_admin_option我得到了错误:
get_saved_network_option is not defined为什么我的函数不能只在一个文件中加载,有什么明显的原因吗?
发布于 2016-02-29 17:39:06
请按如下所示修改您的get_skizzar_admin_option函数并尝试。
static function get_skizzar_admin_option() {
$is_network_only = ( is_multisite() && self::get_saved_network_option( 'enable-global-settings' ) ) ? 'get_saved_network_option' : 'get_saved_option';
return $is_network_only;
}https://stackoverflow.com/questions/35695411
复制相似问题