2016-02-29 49 views
1

我有注册了一个类,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 

有没有一个明显的原因我想念g为什么我的函数不会只加载一个文件?

回答

0

请按照以下步骤修改您的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; 
} 
相关问题