这应该做到:
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附件总是有关闭的注释,但它们的数据库值仍然会显示“打开”。如果要更改,请运行以下代码:
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\' );