web-dev-qa-db-ja.com

メディア/添付ファイルに関するコメントを閉じる最も簡単な方法は何ですか?

私のブログWPでは、さまざまな雑多なメディアの添付ファイルに対するスパム攻撃を一貫して受けています。デフォルトでは、メディアにはオープンコメントがあります(たとえば、 http://literalbarrage.org/blog/archives/2009/03/18/daddywill-date-march-2009/dsc08760/ )、まだメディアファイルのコメントを無効にするネイティブな方法はありません。 (例: https://skitch.com/zamoose/rhktp/attachmentedit ) enter image description here

それで、2つの質問:

  1. 今後のアップロードですべてのコメントをデフォルトで無効にするにはどうすればよいですか。
  2. 以前のアップロードすべてに対して遡及的にコメントを無効にするにはどうすればよいですか。

これは私の入ってくるスパムを減らすのに役立つトン...

5
ZaMoose

これはそれをするべきです:

function wpse15750_comment_check( $id ){
    if( get_post_type( $id ) == 'attachment' )
        exit;
}

add_action( 'pre_comment_on_post', 'wpse15750_comment_check' );

編集

上記を無視してください。それは新しいコメントを止めます、しかしあなたが望むことをするために、これははるかに良いです:

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

それは添付ファイルが常にクローズドコメントを持っていることをWordPressに伝えますが、それらのデータベース値はまだ 'open'と言うでしょう。変更したい場合は、次のコードを実行してください。

global $wpdb;
$wpdb->update( $wpdb->posts, array( 'comment_status' => 'closed' ), array( 'post_type' => 'attachments', 'comment_status' => 'open' ) );

今後の添付ファイルに未解決のコメントが含まれないようにするには、次のフィルタを使用します。

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

1号に関して - remove_post_type_support( $post_type, 'comments' );はinitにフックする必要があります。

コーデックス: https://codex.wordpress.org/Function_Reference/remove_post_type_support

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

出典: http://www.wpbeginner.com/wp-tutorials/how-to-disable-comments-on-wordpress-media-attachments/

0
andrejm