wake-up-neo.com

Wie füge ich ein benutzerdefiniertes Attribut hinzu?

Wie füge ich ein benutzerdefiniertes Attribut im Feld Contact Form 7ohne Javascript hinzu?

Zum Beispiel gibt es ein solches Feld auf der Seite:

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

Frage: können diese benutzerdefinierten Attribute (data-attr, data-msg) von Feldern im Admin-Panel festgelegt werden?

9
HamSter

Suchen Sie den Namen Ihres Feldes.

[text* text-21]

Wenn der Name Ihres Felds wie in meinem Beispiel "text-21" ist, fügen Sie diesen Code zur function.php-Datei hinzu.

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

Beachten Sie, dass alle Formularelemente mit dem Namen text-21 in allen Formularen mit name = "text-21" benutzerdefiniertes Attribut hinzugefügt werden. Wenn Sie dies verhindern möchten, geben Sie Ihrem Formularelement einen eindeutigen Namen [text * inique-name].

Dann ändern Sie den Code in 

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

Es können auch mehrere Attribute hinzugefügt werden. z.B

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

Es mag alt sein, aber für diejenigen unter Ihnen, die auf dieses Problem stoßen, konnte ich es mit folgenden Schritten überwinden:

nehmen wir an, dies ist die Form:

<script>
hbspt.forms.create({
    css: '',
    portalId: '',
    formId: 'YOUR_FORM_ID'
});
</script>

Sie können den folgenden Code in die Skript-Tags einfügen:

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

referance: https://developers.hubspot.com/global-form-events

0
Tomer Hadad