webentwicklung-frage-antwort-db.com.de

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