wake-up-neo.com

Wie registriere ich benutzerdefinierte Beitragstypen in einem Plugin?

Ich verwende toschos Plugin Class Demo Code als Grundlage für ein Plugin, das ich entwickle. Unter anderem registriert mein Plugin einen benutzerdefinierten Beitragstyp.

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);
}

Meine Frage ist, ist es eine gute Praxis, meine register_my_post_types() -Funktion mit dem init-Hook zu verknüpfen? Oder ist es besser, es direkt in der Funktion plugin_setup() aufzurufen?

Danke im Voraus

1
leemon

Der Haken init ist der erste erlaubte Haken. Wenn früher angerufen, funktioniert es nicht.

Siehe WP Codex: https://codex.wordpress.org/Function_Reference/register_post_type

Erstellen oder ändern Sie einen Beitragstyp. register_post_type sollte nur über die Aktion 'init' aufgerufen werden. Es wird nicht funktionieren, wenn es vor 'init' aufgerufen wird, und Aspekte des neu erstellten oder geänderten Beitragstyps werden falsch funktionieren, wenn es später aufgerufen wird.

2
Jory Hogeveen

Ich mache es immer im init hook. Wenn Sie dies jedes Mal im Setup tun, wenn sie das Setup oder die Einstellungen ändern, registrieren Sie diesen Beitragstyp. Wenn Ihre Einstellungen die URL oder einen Teil des neuen CPT ändern, möchten Sie, dass diese aktiv sind, bevor Sie sie ändern.

2
rudtek