フィールドにカスタム属性を追加する方法 Contact Form 7javascriptなし?
たとえば、ページには次のようなフィールドがあります。
<input type="text" name="name" class="form-control" id="name-1" data-attr="custom" data-msg="Текст 1">
質問:これらのカスタム属性を設定することは可能です(data-attr
、data-msg
)管理パネルのフィールド?
フィールドの名前を見つけます。
[text* text-21]
私の例のように、フィールド名が「text-21」の場合は、このコードをfunction.phpファイルに追加します。
add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
$str_pos = strpos( $content, 'name="text-21"' );
$content = substr_replace( $content, ' data-attr="custom" data-msg="Текст 1" ', $str_pos, 0 );
return $content;
}
Name = "text-21"のすべてのフォームで、名前がtext-21であるすべてのフォーム要素にカスタム属性を追加することに注意してください。防止したい場合は、フォーム要素に一意の名前を付けます[text * inique-name]
次に、コードを
add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
$str_pos = strpos( $content, 'name="inique-name"' );
$content = substr_replace( $content, ' data-attr="custom" data-msg="Текст 1" ', $str_pos, 0 );
return $content;
}
複数の属性を追加することもできます。例えば
add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
$str_pos = strpos( $content, 'name="your-email-homepage"' );
$content = substr_replace( $content, ' aria-describedby="emailHelp" ', $str_pos, 0 );
$str_pos2 = strpos( $content, 'name="your-fname-homepage"' );
$content = substr_replace( $content, ' aria-describedby="fnameHelp" ', $str_pos2, 0 );
$str_pos3 = strpos( $content, 'name="your-lname-homepage"' );
$content = substr_replace( $content, ' aria-describedby="lnameHelp" ', $str_pos3, 0 );
return $content;
}
それは古いかもしれませんが、この問題に遭遇したあなたのために、私は次のようにしてそれを克服することができました:
これが次の形式だとしましょう:
<script>
hbspt.forms.create({
css: '',
portalId: '',
formId: 'YOUR_FORM_ID'
});
</script>
スクリプトタグ内に次のコードを追加できます。
window.addEventListener('message', event => {
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady' && event.data.id === 'YOUR_FORM_ID') {
document.getElementById("name-1-YOUR_FORM_ID").setAttribute("data-msg", "Текст 1");
}
});