Je sais déjà comment supprimer une metabox de ma page d'édition de type d'article personnalisée. Cependant, je souhaite supprimer les commentaires metabox tout en autorisant les commentaires pour le post. Parce que je remarque que lorsque je le supprime, cela désactive les commentaires. Toute fonction que je peux utiliser?
Ne supprimez pas cela via CSS. La partie _POST est également active et WP enregistre les données! Utilisez les crochets pour supprimer les méta-boîtes; code par scratch.
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' );
voir plus sur un plugin pour supprimer tous les éléments de l'interface utilisateur et la fonction pour les commentaires: https://github.com/bueltge/Remove-Comments-Absolutely
Vous pouvez utiliser l'interface utilisateur pour le supprimer:
Cliquez sur "Options d'écran" en haut à droite de l'écran d'édition.
et décochez la case Discussion
ou si vous voulez le faire par code, masquez simplement le conteneur div par style="display:none;"
function hide_comments_div() {
global $pagenow;
if ($pagenow=='post-new.php' OR $pagenow=='post.php')
echo '<style>#commentstatusdiv{ display:none; }</style>';
}
add_action('admin_head', 'hide_comments_div');
Il y a un problème dans le fichier /wp-includes/post.php
fonction wp_insert_post()
if ( empty($comment_status) ) {
if ( $update )
$comment_status = 'closed';
else
$comment_status = get_option('default_comment_status');
}
Vos commentaires seront fermés après la mise à jour. La solution est de modifier le rappel de 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 '<input type="hidden" value="' . $post->comment_status . '" name="comment_status"/>';
echo '<input type="hidden" value="' . $post->ping_status . '" name="ping_status"/>';
echo '<style type="text/css">#commentstatusdiv {display: none;}</style>';
};
}
);
Ajoutez ceci dans functions.php
de votre thème
function tune_admin_area() {
echo '<style>#commentstatusdiv{ display:none; }</style>';
}
add_action('admin_head', 'tune_admin_area');
C'est ce que j'avais l'habitude de cacher certaines des boîtes de méta, y compris la boîte de statut de commentaire:
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;
De cette façon, les méta-boîtes seront masquées pour tous les contributeurs, mais pas pour les administrateurs.
Dans la deuxième fonction, comment_status
est défini sur "open"
uniquement lorsque les mêmes conditions que celles qui ont entraîné la désactivation des commentaires sont remplies.