我需要为插件创建自定义帖子类型。好吧,我决定以OOP方式创建插件,所以基本上我使用了Devin Vinson的WordPress-Plugin-Boilerplate作为起点。
我见过很多插件在主插件文件中添加自定义帖子类型,如下所示:
add_action( 'init', 'create_my_custom_post_type' );
function create_my_custom_post_type(){
$labels = array( ... );
$args = array( ... );
register_post_type( 'my_custom_post_type', $args );
}
现在,因为我正在尝试以正确的方式执行此操作,而不是这样做,我转到de class-plugin-name.php
目录中的文件/includes
并创建了一个新的私有函数:
class Plugin_Name {
private function register_my_custom_post_type(){
$labels = array( ... );
$args = array( ... );
register_post_type( 'my_custom_post_type', $args );
}
public function __construct(){
// This was also added to my constructor
$this->register_my_custom_post_type();
}
}
由于每次调用插件时都会运行,因此我认为将完美地创建帖子类型,但我收到此错误:
致命错误:在a上调用成员函数add_rewrite_tag() /public_html/wordpress/wp-includes/rewrite.php中的非对象在线 51
我很确定问题是我的新功能,任何人对如何正确操作都有任何想法?也许我应该把代码放在那个类之外,然后创建一个新类并为init创建一个钩子?
答案 0 :(得分:4)
你是否正确挂钩init
注册自定义帖子类型。这是正确的语法:
public function __construct() {
add_action( 'init', array( $this, 'register_my_custom_post_type' ) );
}