Remove Comments Metabox, aber erlauben immer noch Kommentare

Ich weiß bereits, wie ich eine Metabox von meiner benutzerdefinierten Post-Typ-Bearbeitungsseite entfernen kann. Allerdings möchte ich die Kommentare Metabox entfernen, aber immer noch für den Beitrag kommentieren. Weil ich merke, wenn ich es entferne, deaktiviert es Kommentare. Welche function kann ich verwenden?

Solutions Collecting From Web of "Remove Comments Metabox, aber erlauben immer noch Kommentare"

Entferne das nicht via CSS. Der _POST Teil ist ebenfalls aktiv und WP speichert die Daten! Verwenden Sie die Hooks, um Meta-Boxen zu entfernen; Code von Grund auf neu.

function fb_remove_comments_meta_boxes() { remove_meta_box( 'commentstatusdiv', 'post', 'normal' ); remove_meta_box( 'commentstatusdiv', 'page', 'normal' ); // remove trackbacks remove_meta_box( 'trackbacksdiv', 'post', 'normal' ); remove_meta_box( 'trackbacksdiv', 'page', 'normal' ); } add_action( 'admin_init', 'remove_comments' ); 

Sehen Sie mehr über ein Plugin, um alle UI-Elemente zu entfernen und für Kommentare zu verwenden: https://github.com/bueltge/Remove-Comments-Absolutely

Sie können die Benutzeroberfläche verwenden, um sie zu entfernen:

Klicken Sie oben rechts im Bearbeitungsbildschirm auf “Bildschirmoptionen”

Bildbeschreibung hier eingeben

und deaktivieren Sie das Kontrollkästchen Diskussion

Bildbeschreibung hier eingeben

oder wenn Sie es per Code tun möchten, verstecken Sie einfach den Container div von style="display:none;"

 function hide_comments_div() { global $pagenow; if ($pagenow=='post-new.php' OR $pagenow=='post.php') echo ''; } add_action('admin_head', 'hide_comments_div'); 

Es gibt ein Problem in der Datei /wp-includes/post.php function wp_insert_post()

 if ( empty($comment_status) ) { if ( $update ) $comment_status = 'closed'; else $comment_status = get_option('default_comment_status'); } 

Ihre Kommentare werden nach dem Update geschlossen. Die Lösung ist Change Callback von commentstatusdiv insted:

 add_action( 'add_meta_boxes', function () { global $wp_meta_boxes, $current_screen; $wp_meta_boxes[$current_screen->id]['normal']['core']['commentstatusdiv']['callback'] = function () { global $post; echo ''; echo ''; echo ''; }; } ); 

Fügen Sie dies in der functions.php Ihres Themes hinzu

 function tune_admin_area() { echo ''; } add_action('admin_head', 'tune_admin_area'); 

Dies ist, was ich verwendet habe, um einige der Meta-Boxen, einschließlich der Kommentar-Status-Box zu verstecken:

 if (is_admin()) : function my_remove_meta_boxes() { if( !current_user_can('manage_options') ) { remove_meta_box('postcustom', 'post', 'normal'); remove_meta_box('trackbacksdiv', 'post', 'normal'); remove_meta_box('commentstatusdiv', 'post', 'normal'); remove_meta_box('slugdiv', 'post', 'normal'); } } add_action( 'admin_menu', 'my_remove_meta_boxes' ); function handle_comments_setting( $data ) { if( !current_user_can('manage_options') ) { $data['comment_status'] = "open"; } return $data; } add_filter( 'wp_insert_post_data', 'handle_comments_setting' ); endif; 

Auf diese Weise werden die Metaboxen für alle Mitwirkenden verborgen, aber nicht für die Administratoren.

In der zweiten function wird comment_status nur dann auf "open" , wenn die gleichen Bedingungen erfüllt sind, die dazu geführt haben, dass die Kommentare überhaupt deaktiviert wurden.