我在general-settings中创建了一个输入字段。它位于本地ngo网络站点的插件中。
看起来是这样的,效果很好。
$ngob_sitelist_slug = new ngob_sitelist_slug();
class ngob_sitelist_slug {
function ngob_sitelist_slug( ) {
add_filter( \'admin_init\' , array( &$this , \'ngob_register_slug\' ) );
}
function ngob_register_slug() {
register_setting( \'general\', \'sitelist_slug\', \'esc_attr\' );
add_settings_field(\'sitelist_slug\', \'<label for="sitelist_slug">\'.__(\'Slug för site-lista\' , \'ngo-branding\' ).\'</label>\' , array(&$this, \'ngob_slug_html\') , \'general\' );
}
function ngob_slug_html() {
$value = get_option( \'sitelist_slug\', \'\' );
echo \'<input type="text" id="sitelist_slug" name="sitelist_slug" value="\' . $value . \'" />\';
}
}
然而,我只想在WPMU安装上为网络(主)站点创建它。
所以我这样做了;
// Get site id
$blog_id = get_current_blog_id();
// Check if we are on network site
if( is_main_site( $blog_id ) ) {
$ngob_sitelist_slug = new ngob_sitelist_slug();
class ngob_sitelist_slug {
function ngob_sitelist_slug( ) {
add_filter( \'admin_init\' , array( &$this , \'ngob_register_slug\' ) );
}
function ngob_register_slug() {
register_setting( \'general\', \'sitelist_slug\', \'esc_attr\' );
add_settings_field(\'sitelist_slug\', \'<label for="sitelist_slug">\'.__(\'Slug för site-lista\' , \'ngo-branding\' ).\'</label>\' , array(&$this, \'ngob_slug_html\') , \'general\' );
}
function ngob_slug_html() {
$value = get_option( \'sitelist_slug\', \'\' );
echo \'<input type="text" id="sitelist_slug" name="sitelist_slug" value="\' . $value . \'" />\';
}
}
}
但是,我在重新加载页面时出现以下错误:
Fatal error: Uncaught Error: Class \'ngob_sitelist_slug\' not found...(shortened the output, since it\'s mostly path:s)
为什么会这样?Im一开始对类很陌生,但当网络站点上没有时,类不会被执行,所以没有问题,正如预期的那样。但是当我在网络站点上时,我得到了上面的错误。。
如何修复这个问题,以便我可以获得输入字段,但只能在主(网络)站点上?
我不完全明白问题是什么,在谷歌上似乎很难找到与此相关的任何信息。我想你不能用if来包装一个类?但为什么不呢?最重要的是,如何解决这个问题?