我正在使用WooCommerce插件,它有一个过滤器,可以过滤我想要覆盖的电子邮件。过滤器声明如下:
public function __construct() {
add_filter( \'woocommerce_email_attachments\', array( $this, \'attach_ics_file\' ), 10, 3 );
}
作为课程的一部分:
class WC_Booking_Email_Manager
功能是:
public function attach_ics_file( $attachments, $email_id, $booking ) {
$available = apply_filters( \'woocommerce_bookings_emails_ics\', array( \'booking_confirmed\', \'booking_reminder\' ) );
if ( in_array( $email_id, $available ) ) {
$generate = new WC_Bookings_ICS_Exporter;
$attachments[] = $generate->get_booking_ics( $booking );
}
return $attachments;
}
这只是附加了一个。ics日历文件到电子邮件。我不想发生这种事。
在我的功能中。php,我尝试了:
remove_filter( \'woocommerce_email_attachments\', array( $GLOBALS[\'WC_Booking_Email_Manager\'], \'attach_ics_file\' ), 10,3);
但这不起作用。
我的问题是,如何通过重写函数来阻止附件的发生,但只能在这个插件的上下文中?i、 e.还有其他插件可以制作附件,我不想阻止他们这样做。
Edit
下面的代码是通过使用上面代码中的过滤器并返回空数组来解决的。它被放置在函数中。主题的php。
function woocommerce_bookings_emails_ics_edits( $array ) {
return array();
}
add_filter( \'woocommerce_bookings_emails_ics\', \'woocommerce_bookings_emails_ics_edits\', 10, 1 );