类方法和常规函数之间有什么区别吗?

时间:2015-10-24 20:43:38

标签: php css wordpress

我正在尝试学习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();

管理区域崩溃。它结束如下: 正如您从图像中看到的,我点击了"屏幕选项"按钮,但它不起作用。

所以我的问题是这两个代码有什么区别? 为什么第一段代码正在运行,而第二段代码只是在调用函数时呢?

1 个答案:

答案 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()作为回调。