web-dev-qa-db-ja.com

カスタム投稿タイプをプラグインに登録する方法

私は開発中のプラグインの基盤として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()関数で直接呼び出すほうが良いでしょうか。

前もって感謝します

1
leemon

initフックは最初に許可されたフックです。先に呼ばれてもうまくいきません。

WP Codexを参照してください: https://codex.wordpress.org/Function_Reference/register_post_type

投稿タイプを作成または変更します。 register_post_typeは 'init'アクションを通してのみ呼び出されるべきです。 initの前に呼び出された場合は機能しません。新しく作成または変更された投稿タイプの側面は、後で呼び出された場合は正しく機能しません。

2
Jory Hogeveen

私はいつもinitフックでそれをします。あなたがセットアップでそれをセットアップや設定を変更するたびにそれを行うと、あなたはその投稿タイプを登録することになります。さらに、あなたの設定がURLや新しいcptの任意の部分を変更する場合は、それらを変更する前にそれらをアクティブにします。

2
rudtek