web-dev-qa-db-fra.com

Quel est le moyen le plus simple de fermer les commentaires sur les médias/pièces jointes?

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/attachmenteditenter image description here

Donc, deux questions:

  1. Comment désactiver tous les commentaires pour les téléchargements ultérieurs par défaut?
  2. Comment désactiver rétroactivement les commentaires sur tous les téléchargements précédents?

Cela aidera un ton à réduire mes spams entrants ...

5
ZaMoose

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' );

MODIFIER

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' );
2
John P Bloch

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/

0
andrejm