web-dev-qa-db-ja.com

カスタム属性を追加するには?

フィールドにカスタム属性を追加する方法 Contact Form 7javascriptなし?

たとえば、ページには次のようなフィールドがあります。

<input type="text" name="name" class="form-control" id="name-1" data-attr="custom" data-msg="Текст 1"> 

質問:これらのカスタム属性を設定することは可能です(data-attrdata-msg)管理パネルのフィールド?

14
HamSter

フィールドの名前を見つけます。

[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;
}
17
Oleg Apanovich

複数の属性を追加することもできます。例えば

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;        
}
2
Victor Drover

それは古いかもしれませんが、この問題に遭遇したあなたのために、私は次のようにしてそれを克服することができました:

これが次の形式だとしましょう:

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

参照: https://developers.hubspot.com/global-form-events

0
Tomer Hadad