Benutzerdefinierter Post-Typ Setzen Sie Kommentare standardmäßig auf ON, ohne METABOX anzuzeigen

Ich habe einen neuen benutzerdefinierten Beitragstyp für bestimmte Posts erstellt. Die Posts von meinem neuen benutzerdefinierten Beitragstyp haben – standardmäßig – die Kommentare auf “Aus” gesetzt. Ich muss die Kommentare standardmäßig auf “An” setzen.

In meiner functions.php Datei habe ich folgendes:

 'supports' => array('editor','comments') 

und

 function default_comments_on( $data ) { if( $data['post_type'] == 'registro' && $data['post_status'] == 'auto-draft' ) { $data['comment_status'] = 1; } return $data; } add_filter( 'wp_insert_post_data', 'default_comments_on' ); 

Aber es hat die Box standardmäßig nicht markiert. Irgendwelche Tipps?

Meine Standard-Posts zeigen die Metabox für Kommentare nicht an und die Kommentare sind standardmäßig erlaubt. Ich möchte genau das mit meinem neuen benutzerdefinierten Post-Typ machen. Ich meine: Zeige die Metabox nicht und aktiviere Kommentare standardmäßig.

Das Register:

 function create_post_type_registro() { /** * Labels customizados para o tipo de post * */ $labels = array( 'name' => _x('Registros', 'post type general name'), 'singular_name' => _x('Registro', 'post type singular name'), 'add_new' => _x('Adicionar novo', 'film'), 'add_new_item' => __('Adicionar novo registro'), 'edit_item' => __('Editar registro'), 'new_item' => __('Novo registro'), 'all_items' => __('Todos os registros'), 'view_item' => __('Ver registro'), 'search_items' => __('Procurar registros'), 'not_found' => __('Nenhum registro encontrado'), 'not_found_in_trash' => __('Nenhum registro encontrado na lixeira'), 'parent_item_colon' => '', 'menu_name' => 'Registros' ); /** * Registamos o tipo de post registro através desta função * passando-lhe os labels e parâmetros de controle. */ register_post_type( 'registro', array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_ui' => true, 'show_in_menu' => true, 'has_archive' => 'registros', 'rewrite' => array( 'slug' => 'registros', 'with_front' => false, ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('editor','comments') ) ); 

Solutions Collecting From Web of "Benutzerdefinierter Post-Typ Setzen Sie Kommentare standardmäßig auf ON, ohne METABOX anzuzeigen"

Benutzerdefinierte Beitragstypen unterstützen standardmäßig Kommentare. Ich bin mir nicht sicher, wie Sie Ihren Beitragstyp registriert haben, da Sie nicht die vollständige Quelle angegeben haben, aber der Codex hat gute Beispiele dafür.

Wenn die Metabox in Ihrem benutzerdefinierten Post-Typ angezeigt wird und Sie versuchen, sie zu verbergen, können Sie oben rechts in Ihrem Browser auf Bildschirmoptionen klicken und die Diskussion der Kommentare deaktivieren. Dies verbirgt nur die Kommentar-Metabox auf dem Bearbeitungsbildschirm.

Bildbeschreibung hier eingeben

Stellen Sie sicher, dass Sie den Kommentarteil in Ihre single.php oder page.php einfügen.

====== Bearbeiten 2 – Richtige Antwort ======

Wenn man sich das genauer anschaut, sieht es so aus, als ob etwas den Kommentarstatus überschreibt. Wenn Sie die folgenden functionen verwenden, werden Sie tun, was Sie wollen

 // Sets the comments to allowed by default function turn_on_comments() { update_option('default_comment_status', 'open'); } add_action('update_option', 'turn_on_comments'); // Hides the metabox in the edit screen (replace post-type-here with your custom post type) function remove_meta_boxes() { remove_meta_box('commentstatusdiv', 'post-type-here', 'normal'); } add_action('admin_menu', 'remove_meta_boxes'); 

Die vorherige Antwort funktioniert nicht für mich und ich denke, dass es für die meisten Leute nicht funktionieren kann. Auch wenn es für jemanden funktioniert, überschreibt es die WordPress-Konfiguration site-weit und es ist nicht spezifisch für den erforderlichen benutzerdefinierten Beitragstyp.

Für mich ist die korrekte Möglichkeit, Kommentare in einem benutzerdefinierten Post-Typ zu aktivieren und das Status-Meta-Feld für Kommentare zu entfernen, in etwa so (vorausgesetzt, der Post-Typ wird mit Unterstützung für Kommentare registriert):

 add_action('admin_menu', 'cyb_remove_meta_boxes'); function cyb_remove_meta_boxes() { remove_meta_box('commentstatusdiv', 'post-type-here', 'normal'); } add_filter( 'wp_insert_post_data', 'cyb_comments_on' ); function cyb_comments_on( $data ) { if( $data['post_type'] == 'post-type-here' ) { $data['comment_status'] = "open"; } return $data; } 

Oder vielleicht besser, wenn wir Redakteuren erlauben wollen, Kommentare zu schließen:

 add_action('admin_menu', 'cyb_remove_meta_boxes'); function cyb_remove_meta_boxes() { if( ! current_user_can( 'edit_others_posts' ) ) { remove_meta_box('commentstatusdiv', 'post-type-here', 'normal'); add_filter( 'wp_insert_post_data', 'cyb_comments_on' ); } } function cyb_comments_on( $data ) { if( $data['post_type'] == 'post-type-here' ) { $data['comment_status'] = "open"; } return $data; } 

Außerdem glaube ich, dass Codex falsch ist, da es besagt, dass comment_status auf den Status der Standardkommentare comment_status ist. Das heißt, wenn der benutzerdefinierte Beitragstyp Kommentare unterstützt und der Standardkommentarsatus in der WordPress-Konfiguration für neue Beiträge geöffnet ist, sollten in jedem neuen Beitrag standardmäßig Kommentare geöffnet sein. Dies geschieht jedoch nicht, wenn Sie das Kommentarstatusmeta-Feld entfernen. Deshalb muss comment_status beim comment_status des comment_status überschrieben werden.