Contact Form 7 v5.8メモ

新フィルターフックのメモ

wpcf7_mail_html_body

HTMLメール本文は、これまでWPCF7_AUTOPの定義に関わらずwpcf7_autopでフォーマットされていたが、v5.8からWPCF7_AUTOPの定義が適用されるようになる。

このため、WPCF7_AUTOPをfalse定義して、HTMLメールも利用している場合は要チェック!
→きちんとhtmlで書かずにautpに任せている場合はレイアウト崩れに注意!

変更前(v5.7.7)

./includes/mail.php (v5.7.7)
private function htmlize( $body ) {
...
  $html = $header . wpcf7_autop( $body ) . $footer;
  ⇒本文は自動整形される
...
}

変更後(v5.8)

./includes/mail.php (v5.8)
private function htmlize( $body ) {
...
 $body = apply_filters( 'wpcf7_mail_html_body', $body, $this );
 ⇒自動整形をフィルターフックで制御できる
...
}

WPCF7_AUTOPは、デフォルトtrue。
変更は、wp-config.phpで。

define ('WPCF7_AUTOP', false);

テーマでfalseにする場合は、こちら。

add_filter( 'wpcf7_autop_or_not', '__return_false' );

wpcf7_config_validator_available_error_codes

フォーム構成の検証内容をカスタマイズ(削除)して、構成エラーをなくすことができるようになりました。
現在定義されているエラーコードは次の15。

const error_codes = array(
    'maybe_empty',
    'invalid_mailbox_syntax',
    'email_not_in_site_domain',
    'html_in_message',
    'multiple_controls_in_label',
    'file_not_found',
    'unavailable_names',
    'invalid_mail_header',
    'deprecated_settings',
    'file_not_in_content_dir',
    'unavailable_html_elements',
    'attachments_overweight',
    'dots_in_names',
    'colons_in_names',
    'upload_filesize_overlimit',
);

新しいフィルターフックで必要な検証だけに絞ることができます。

add_filter( 'wpcf7_config_validator_available_error_codes', function( $error_codes, $contact_form ){
  $error_codes = array(
...
);
	return $error_codes;
}, 10, 2 );

wpcf7_form_additional_atts

formタグに、独自に属性を追加できるようになりました。

add_filter( 'wpcf7_form_additional_atts', function(){
  return array( "" => "" );
} );
./includes/contact-form.php
$atts = array(
	'action' => esc_url( $url ),
	'method' => 'post',
	'class' => ( '' !== $class ) ? $class : null,
	'id' => ( '' !== $id_attr ) ? $id_attr : null,
	'name' => ( '' !== $name_attr ) ? $name_attr : null,
	'aria-label' => ( '' !== $title_attr )
		? $title_attr : __( 'Contact form', 'contact-form-7' ),
	'enctype' => ( '' !== $enctype ) ? $enctype : null,
	'autocomplete' => ( '' !== $autocomplete ) ? $autocomplete : null,
	'novalidate' => true,
	'data-status' => $data_status_attr,
);

$atts += (array) apply_filters( 'wpcf7_form_additional_atts', array() );

$html .= sprintf( '<form %s>', wpcf7_format_atts( $atts ) ) . "\n";
$html .= $this->form_hidden_fields();
$html .= $this->form_elements();

if ( ! $this->responses_count ) {
	$html .= $this->form_response_output();
}

$html .= "\n" . '</form>';

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です