我正在尝试学习wordpress来创建我的wordpress主题。但问题是,每当我尝试使用wp_enqueue_style()
内的class
加载我的css文件时,我的wordpress管理区域就会崩溃。我打破的意思是,它的js文件无法加载,因为它的着色方案从蓝色变为红色,按钮的功能类似于"屏幕选项"或"帮助"停止工作。
以下是工作代码:
function wp_custom_styles(){
wp_enqueue_style("bootstrap_css", get_template_directory_uri() . "/css/bootstrap.min.css");
wp_enqueue_style("style_css", get_stylesheet_uri());
}
add_action("wp_enqueue_scripts", "wp_custom_styles");
但如果我使用它:
class wp_theme_preparation{
public function __construct(){
add_action("wp_enqueue_scripts", $this->add_theme_styles());
}
public function add_theme_styles(){
wp_enqueue_style("bootstrap_css", get_template_directory_uri() . "/css/bootstrap.min.css");
wp_enqueue_style("style_css", get_stylesheet_uri());
}
}
$instance = new wp_theme_preparation();
管理区域崩溃。它结束如下: 正如您从图像中看到的,我点击了"屏幕选项"按钮,但它不起作用。
所以我的问题是这两个代码有什么区别? 为什么第一段代码正在运行,而第二段代码只是在调用函数时呢?
答案 0 :(得分:1)
要注册作为方法的操作,您应该使用
import {Component, ...} from 'angular2/angular2';
import {Router, ...} from 'angular2/router';
import {HomeCmp} from '../home/home';
@Component({
selector: 'app',
// params of your component here
})
@RouteConfig([
{ path: '/', component: HomeCmp, as: 'MyHome' },
// your other states here
])
export class AppCmp {
router: Router;
constructor(router: Router) {
this.router = router;
}
navigateToHome() {
// for example, that's how we can navigate to our home route
this.router.navigate(['./MyHome', {param: 3}]);
}
}
请参阅the documentation(特别是“与课程一起使用”部分)。
更新
您的原始代码
add_action("wp_enqueue_scripts", array( $this, 'add_theme_styles') );
尝试将调用add_action("wp_enqueue_scripts", $this->add_theme_styles());
的返回值注册为回调,而非您的意图。
WordPress使用PHP的call_user_func
,它需要一个callable
参数。从该页面:
PHP函数的名称作为字符串传递。任何内置或 可以使用用户定义的函数,除了语言结构,例如: array(),echo,empty(),eval(),exit(),isset(),list(),print或 未设置()。
实例化对象的方法作为包含的数组传递 索引为0的对象和索引为1的方法名称。
最后一句话归结为传递$this->add_theme_styles()
作为回调。