Je reçois régulièrement des tentatives de spam sur diverses pièces jointes sur mon blog principal WP. Par défaut, les médias ont des commentaires ouverts (par exemple, http://literalbarrage.org/blog/archives/2009/03/18/daddywill-date-march-2009/dsc08760/ ), mais il n'y a pas de moyen natif de désactiver les commentaires sur les fichiers multimédias. (par exemple https://skitch.com/zamoose/rhktp/attachmentedit )
Donc, deux questions:
Cela aidera un ton à réduire mes spams entrants ...
Cela devrait le faire:
function wpse15750_comment_check( $id ){
if( get_post_type( $id ) == 'attachment' )
exit;
}
add_action( 'pre_comment_on_post', 'wpse15750_comment_check' );
Ignorer ce qui précède. Cela arrêtera les nouveaux commentaires, mais pour faire ce que vous voulez, c'est beaucoup mieux:
function wpse15750_comments_closed( $open, $id ){
if( get_post_type( $id ) == 'attachment' )
return false;
return $open;
}
add_action( 'pre_comment_on_post', 'wpse15750_comments_closed', 10, 2 );
Cela indiquera à WordPress que les pièces jointes ont toujours des commentaires fermés, mais que les valeurs de leur base de données indiqueront toujours "ouvert". Si vous voulez changer cela, exécutez le code suivant:
global $wpdb;
$wpdb->update( $wpdb->posts, array( 'comment_status' => 'closed' ), array( 'post_type' => 'attachments', 'comment_status' => 'open' ) );
Pour éviter que des pièces jointes futures aient des commentaires ouverts, utilisez le filtre suivant:
function wpse15750_no_attachment_comments( $data ){
if( $data['post_type'] == 'attachment' )
$data['comment_status'] = 'closed';
return $data;
}
add_filter( 'wp_insert_post_data', 'wpse15750_no_attachment_comments' );
Quant au n ° 1 - remove_post_type_support( $post_type, 'comments' );
doit être connecté à init.
Codex: https://codex.wordpress.org/Function_Reference/remove_post_type_support
Il semble y avoir aussi le filtre comments_open
:
function filter_media_comment_status( $open, $post_id ) {
$post = get_post( $post_id );
if( $post->post_type == 'attachment' ) {
return false;
}
return $open;
}
add_filter( 'comments_open', 'filter_media_comment_status', 10 , 2 );
Source: http://www.wpbeginner.com/wp-tutorials/how-to-disable-comments-on-wordpress-media-attachments/