Contact Form 7动态文本-GET字段中的占位符

时间:2018-07-27 作者:user2115227

我正在使用带有动态文本插件的联系人表单7。这真的很好用。。。

我所做的是将其设置为,如果用户单击产品上的链接,它会将他们重定向到查询表单,并且产品名称已经输入到字段中。。。

使用以下CF7代码,这可以正常工作:

<p>[dynamictext enquiry-product "CF7_GET key=\'product-name\'" ]</p>
然后通过以下方式导航到查询表单:

http://www.myurl.com/contact-form/?product-name=Product%20Name
然而,我正在努力解决如何扩展快捷码,以便既可以包含占位符(有时人们会访问表单而不是从产品页面),也可以在之前添加一些文本。。。

所以这个领域会说:

“产品名称查询”(URL中有“产品名称”)。

如果他们从http://www.myurl.com/contact-form 该字段只有一个“查询主题”的占位符。

我尝试过:

<p>[dynamictext enquiry-product "CF7_GET key=\'product-name\'" placeholder "Enquiry Subject"]</p>
我也尝试过:

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

<p>[dynamictext enquiry-product "Enquiry About "CF7_GET key=\'product-name\'""]</p>
没有运气。。。

有人知道这是否可能吗?如果没有,请选择其他选项将产品名称传递到字段中,同时也可以添加到文本中并具有占位符。

谢谢

1 个回复
最合适的回答,由SO网友:mmm 整理而成

动态文本插件无法满足您的需要,但我使用此代码编写了一个新标记,您可以这样使用:

[dynamictext_placeholder enquiry-product placeholder "placeholder text" "CF7_GET key=\'product-name\'" "before \'%s\' after"]
为此,请使用以下内容创建一个新插件:

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;

}

结束

相关推荐

Form Object Gravity Forms

重力形式。我尝试在渲染表单字段之前对其进行操作add_filter(\"gform_pre_render\", \"my_function\", 10, 5); function my_function($form){ ... $form[\"fields\"][0][\"content\"] = \'This is a html-block\' } 这样,我可以传递html块的内容,假设html是表单上的第一个字段。如何通过id? 假设上面的html块

Contact Form 7动态文本-GET字段中的占位符 - 小码农CODE - 行之有效找到问题解决它

Contact Form 7动态文本-GET字段中的占位符

时间:2018-07-27 作者:user2115227

我正在使用带有动态文本插件的联系人表单7。这真的很好用。。。

我所做的是将其设置为,如果用户单击产品上的链接,它会将他们重定向到查询表单,并且产品名称已经输入到字段中。。。

使用以下CF7代码,这可以正常工作:

<p>[dynamictext enquiry-product "CF7_GET key=\'product-name\'" ]</p>
然后通过以下方式导航到查询表单:

http://www.myurl.com/contact-form/?product-name=Product%20Name
然而,我正在努力解决如何扩展快捷码,以便既可以包含占位符(有时人们会访问表单而不是从产品页面),也可以在之前添加一些文本。。。

所以这个领域会说:

“产品名称查询”(URL中有“产品名称”)。

如果他们从http://www.myurl.com/contact-form 该字段只有一个“查询主题”的占位符。

我尝试过:

<p>[dynamictext enquiry-product "CF7_GET key=\'product-name\'" placeholder "Enquiry Subject"]</p>
我也尝试过:

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

<p>[dynamictext enquiry-product "Enquiry About "CF7_GET key=\'product-name\'""]</p>
没有运气。。。

有人知道这是否可能吗?如果没有,请选择其他选项将产品名称传递到字段中,同时也可以添加到文本中并具有占位符。

谢谢

1 个回复
最合适的回答,由SO网友:mmm 整理而成

动态文本插件无法满足您的需要,但我使用此代码编写了一个新标记,您可以这样使用:

[dynamictext_placeholder enquiry-product placeholder "placeholder text" "CF7_GET key=\'product-name\'" "before \'%s\' after"]
为此,请使用以下内容创建一个新插件:

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;

}

相关推荐

Call another page in forms

我正在为WordPress插件做一些练习。在插件中,我正在处理一个表单,我需要的是在提交时调用另一个页面。我试过了,但似乎什么都没用。<form method = \"Post\" action = \"some_file.php\"> </form>