如何在插件中注册自定义帖子类型?

时间:2016-11-05 作者:leemon

我在用toscho的Plugin Class Demo 代码作为我正在开发的插件的基础。除此之外,我的插件还注册了一个自定义的帖子类型。

public function plugin_setup() {
    $this->plugin_url = plugins_url( \'/\', __FILE__ );
    $this->plugin_path = plugin_dir_path( __FILE__ );
    $this->load_language( \'myplugindomain\' );
    // more stuff: register actions and filters
    add_action( \'init\', array( \'MyPluginClass\', \'register_my_post_types\' ) );
}

public function register_my_post_types() {
    $labels = array( ..... );

    $args = array(
        \'show_ui\' => true,
        \'public\' => true,
        \'labels\' => $labels,
        \'supports\' => array(\'title\', \'editor\', \'thumbnail\'), 
        \'has_archive\' => true
    );

    register_post_type(\'mycustomtype\', $args);
}
我的问题是,钩住我的register_my_post_types() 功能到init 钩还是直接在plugin_setup() 作用

提前感谢

2 个回复
最合适的回答,由SO网友:Jory Hogeveen 整理而成

这个init 吊钩是允许的第一个吊钩。如果早点打电话,那就不行了。

参见WP Codex:https://developer.wordpress.org/plugins/post-types/registering-custom-post-types/

创建或修改帖子类型。register\\u post\\u type只能通过“init”操作调用。如果在“init”之前调用,它将不起作用,如果稍后调用,新创建或修改的post类型的方面将无法正常工作。

SO网友:rudtek

我总是在初始化钩子中完成它。如果每次他们更改设置时都在“设置”中执行此操作,则您将注册该帖子类型。此外,如果您的设置更改了url或新cpt的任何部分,则在更改之前,您希望这些内容处于活动状态。