如何在我的OOP插件中添加自定义帖子类型?

时间:2015-08-03 03:00:42

标签: php wordpress class plugins custom-post-type

我需要为插件创建自定义帖子类型。好吧,我决定以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创建一个钩子?

1 个答案:

答案 0 :(得分:4)

你是否正确挂钩init注册自定义帖子类型。这是正确的语法:

public function __construct() {
    add_action( 'init', array( $this, 'register_my_custom_post_type' ) );
}