web-dev-qa-db-fra.com

Formulaire de contact 7 Texte dynamique - espace réservé sur le champ GET

J'utilise le formulaire de contact 7, avec le plugin Dynamic Text. Cela fonctionne vraiment bien ...

Ce que je fais, c'est de le configurer de sorte que si l'utilisateur clique sur un lien d'un produit, il le redirige vers un formulaire de requête, le nom du produit étant déjà saisi dans un champ ...

Cela fonctionne bien, en utilisant le code CF7 suivant:

<p>[dynamictext enquiry-product "CF7_GET key='product-name'" ]</p>

puis en accédant au formulaire de demande par:

http://www.myurl.com/contact-form/?product-name=Product%20Name

Cependant, j'essaie de trouver un moyen d'étendre le code court afin de pouvoir inclure un espace réservé (parfois, les personnes visitent le formulaire PAS depuis la page produit) ET ajoutent également du texte avant ...

Donc, le champ dirait:

"Enquête sur le nom du produit" (avec "Nom du produit" extrait de l'URL).

et s’ils accédaient simplement au formulaire à partir de http://www.myurl.com/contact-form le champ aurait simplement un espace réservé de "sujet d’enquête".

J'ai essayé:

<p>[dynamictext enquiry-product "CF7_GET key='product-name'" placeholder "Enquiry Subject"]</p>

J'ai aussi essayé:

<p>[dynamictext enquiry-product "Enquiry About CF7_GET key='product-name'"]</p>

et

<p>[dynamictext enquiry-product "Enquiry About "CF7_GET key='product-name'""]</p>

Pas de chance...

Quelqu'un sait si cela est possible même? Sinon, toute option alternative permettant de passer le nom du produit dans le champ, tout en pouvant également ajouter du texte et disposer d'un espace réservé.

Merci!

1
user2115227

le plugin Dynamic Text ne peut pas faire ce dont vous avez besoin, mais j'utilise ce code pour écrire une nouvelle balise que vous pouvez utiliser comme ça:

[dynamictext_placeholder enquiry-product placeholder "placeholder text" "CF7_GET key='product-name'" "before '%s' after"]

pour cela, créez un nouveau plugin avec ça:

add_action( 'wpcf7_init', function () {


    wpcf7_add_form_tag(
          array( 'dynamictext_placeholder')
        , 'wpcf7dtx_dynamictext_placeholder_shortcode_handler'
        , true
    );


});


function wpcf7dtx_dynamictext_placeholder_shortcode_handler( $tag ) {


    $tag = new \WPCF7_FormTag( $tag );

    if ( empty( $tag->name ) )
        return '';

    $validation_error = wpcf7_get_validation_error( $tag->name );


    $class = wpcf7_form_controls_class( $tag->type, 'wpcf7dtx-dynamictext' );


    if ( $validation_error )
        $class .= ' wpcf7-not-valid';

    $atts = array();

    $atts['size'] = $tag->get_size_option( '40' );
    $atts['maxlength'] = $tag->get_maxlength_option();
    $atts['minlength'] = $tag->get_minlength_option();

    if ( $atts['maxlength'] && $atts['minlength'] && $atts['maxlength'] < $atts['minlength'] ) {
        unset( $atts['maxlength'], $atts['minlength'] );
    }

    $atts['class'] = $tag->get_class_option( $class );
    $atts['id'] = $tag->get_id_option();
    $atts['tabindex'] = $tag->get_option( 'tabindex', 'int', true );


    if ( $tag->has_option( 'readonly' ) )
        $atts['readonly'] = 'readonly';

    if ( $tag->is_required() )
        $atts['aria-required'] = 'true';

    $atts['aria-invalid'] = $validation_error ? 'true' : 'false';


    if ($tag->has_option( 'placeholder' )) {
        $value = $tag->values[1];
    } else {
        $value = (string) reset( $tag->values );
    }

    $value = $tag->get_default_option( $value );

    $value = wpcf7_get_hangover( $tag->name, $value );

    $scval = do_shortcode('['.$value.']');
    if( $scval != '['.$value.']' ){
        $value = esc_attr( $scval );
    }

    $atts['value'] = $value;


    if ("" === $value && $tag->has_option( 'placeholder' )) {

        $atts['placeholder'] = $tag->values[0];

    } elseif (isset($tag->values[2])) {

        $atts['value'] = sprintf($tag->values[2], $atts['value']);

    }


    $atts['type'] = 'text';
    $atts['name'] = $tag->name;

    $atts = wpcf7_format_atts( $atts );


    $html = sprintf(
        '<span class="wpcf7-form-control-wrap %1$s"><input %2$s />%3$s</span>',
        sanitize_html_class( $tag->name ), $atts, $validation_error );

    return $html;

}
1
mmm