Der benutzerdefinierte Posttyp funktioniert nicht

Ich habe gerade eine Beta-Umgebung zum Testen meiner neuen WordPress-Site aufgebaut. Ich habe die database nicht migriert. Ich habe meine eigene Installation erneut gemacht und über mein Thema (es ist ein einfaches Thema) zu meiner neuen Instanz portiert. Alles funktioniert großartig, außer dem einen benutzerdefinierten Post-Typ, den ich benutze.

Hier ist der relevante Code von functions.php :

 function createCommunityPostType() { $args = array( 'public' => true, 'label' => 'Community', 'capability_type' => 'community', 'capabilities' => array( 'edit_post' => 'edit_community', 'edit_private_posts' => 'edit_private_communities', 'edit_published_posts' => 'edit_published_communities', 'edit_posts' => 'edit_communities', 'edit_others_posts' => 'edit_others_communities', 'delete_post' => 'delete_community', 'delete_posts' => 'delete_communities', 'delete_others_posts' => 'delete_others_communities', 'delete_private_posts' => 'delete_private_communities', 'delete_published_posts' => 'delete_published_communities', 'read_private_posts' => 'read_private_communities', 'read_post' => 'read_community', 'publish_posts' => 'publish_communities' ), 'map_meta_cap' => true, 'has_archive' => true ); register_post_type('community', $args ); } add_action('init', 'createCommunityPostType'); 

Mein benutzerdefinierter Post-Typ wird nicht im Menü angezeigt und ich kann sehen, dass die Fähigkeiten nicht existieren (ich verwende das Mitglieder-Plugin, um das besser sichtbar zu machen).

Ich weiß, dass der Code ausgeführt wird, weil ich vor und nach dem Aufruf von register_post_type einige einfache print statementen hinzugefügt habe. Die Druckanweisungen waren Teil der HTML-Antwort.

Ich kann nicht herausfinden, warum dieser Beitragstyp nicht funktioniert. Ich habe andere Methoden in functions.php , um Stylesheets, Scripts, einige Überschreibungen für Menüs und Sidebars und so weiter zu behandeln. Das alles funktioniert gut.

Bearbeiten :

Ich habe die Standardfunktionen geändert und die Menüoption wird immer noch nicht angezeigt:

 function createCommunityPostType() { $args = array( 'public' => true, 'label' => 'Community', 'capability_type' => 'community', 'capabilities' => array( 'edit_post' => 'edit_posts', 'edit_private_posts' => 'edit_posts', 'edit_published_posts' => 'edit_posts', 'edit_posts' => 'edit_posts', 'edit_others_posts' => 'edit_posts', 'delete_post' => 'delete_posts', 'delete_posts' => 'delete_posts', 'delete_others_posts' => 'delete_posts', 'delete_private_posts' => 'delete_posts', 'delete_published_posts' => 'delete_posts', 'read_private_posts' => 'read', 'read_post' => 'read', 'publish_posts' => 'publish_posts' ), 'map_meta_cap' => true, 'has_archive' => true ); register_post_type('community', $args ); } add_action('init', 'createCommunityPostType'); 

Ich habe jedoch dazu übergegangen, einen sehr einfachen Beispielcode aus WordPress zu verwenden, und der benutzerdefinierte Post-Typ (CPT) erscheint:

 function codex_custom_init() { $args = array( 'public' => true, 'label' => 'Books' ); register_post_type( 'book', $args ); } add_action( 'init', 'codex_custom_init' ); 

Solutions Collecting From Web of "Der benutzerdefinierte Posttyp funktioniert nicht"

Ein Problem besteht darin, dass Ihr 'capability_type' Parameter 'community' nicht mit Ihren Array-Werten für 'capabilities' übereinstimmt.

Aus dem Codex :

Fähigkeitstyp

(Zeichenfolge oder Array) (optional) Die Zeichenfolge, die zum Erstellen der functionen Lesen, Bearbeiten und Löschen verwendet wird. Kann als ein Array übergeben werden, um alternative Pluralformen zu ermöglichen, wenn dieses Argument als Grundlage für den Aufbau der functionen verwendet wird, z. B. array (‘story’, ‘stories’). Standardmäßig wird der capacity_type als Basis zum Erstellen von functionen verwendet. Es scheint, dass map_meta_cap auf true gesetzt werden muss, damit dies funktioniert.

Ihre Fähigkeitsart ist:

 'capability_type' => 'community' 

Und notieren Sie Ihr 'capabilities' Array:

 'capabilities' => array( 'edit_post' => 'edit_community', 'edit_private_posts' => 'edit_private_communities', 'edit_published_posts' => 'edit_published_communities', 'edit_posts' => 'edit_communities', 'edit_others_posts' => 'edit_others_communities', 'delete_post' => 'delete_community', 'delete_posts' => 'delete_communities', 'delete_others_posts' => 'delete_others_communities', 'delete_private_posts' => 'delete_private_communities', 'delete_published_posts' => 'delete_published_communities', 'read_private_posts' => 'read_private_communities', 'read_post' => 'read_community', 'publish_posts' => 'publish_communities' ), 

Ihr Fähigkeitstyp ist einzigartig und Ihre konstruierten Fähigkeiten sind Plural .

Versuchen Sie den Fähigkeitstyp zu ändern:

 'capability_type' => array( 'community', 'communities' ) 

Wenn Sie 'capability_type' definieren, müssen Sie nicht jede function explizit definieren. Versuchen Sie also, das Argument 'capabilities' vollständig wegzulassen .

Wenn Ihr CPT danach nicht mehr angezeigt wird, liegt das wahrscheinlich an der Konfiguration Ihres Mitglieder-Plugins:

  1. Stellen Sie sicher, dass Sie Ihre benutzerdefinierten functionen ordnungsgemäß definiert haben
  2. Stellen Sie sicher, dass der aktuelle Benutzer über die functionen verfügt, auf die in der CPT verwiesen wird.