【问题标题】:Repeater fields in visual composer elements with ACF or JQuery带有 ACF 或 JQuery 的可视化作曲家元素中的中继器字段
【发布时间】:2016-03-18 14:48:46
【问题描述】:

我正在尝试创建一个重复字段,以便能够在可视化作曲家元素插件中添加更多必需的文本字段,但不确定如何添加或是否可以添加。我需要它能够添加用户可能需要的更多文本字段。

以下代码添加了一个文本字段,但我不知道如何制作,以便用户可以添加他们需要的字段。该插件将允许用户添加他们需要的电子邮件、电话、姓名、社交媒体和更多项目。

这是可视化作曲家将加载的自定义字段,可以添加我们自定义的构建字段。

array(
            "type" => "my_param",
            "holder" => "div",
            "class" => "",
            "heading" => __("Flipping text", "js_composer"),
            "param_name" => "fliping_text",
            "value" => '',
            "description" => __( "Enter text and flip it", 'my-text-domain' ),
     )

我的自定义字段在可视化作曲家中会像这样,但设置正确。

    // repeat fields
add_shortcode_param( 'my_param', 'my_param_settings_field', plugin_dir_url( __FILE__ ).'vc_extend/js/elements/elements.js' );
function my_param_settings_field( $settings, $value ) {
   return '<div class="my_param_block">'
             .'<input name="' . esc_attr( $settings['param_name'] ) . '" class="wpb_vc_param_value wpb-textinput ' .
             esc_attr( $settings['param_name'] ) . ' ' .
             esc_attr( $settings['type'] ) . '_field" type="text" value="' . esc_attr( $value ) . '" />'
         .'</div>'
         .'<button class="flip-input-text">Flip</button>'; // New button element
}

这里是使用 jQuery http://jsfiddle.net/Unfxn/27/ 的转发器字段的链接

如果要再次编辑元素,我不确定新字段如何或是否会存储为 my_param 的数组,一旦由可视化作曲家创建,它们可能不会全部加载。

【问题讨论】:

    标签: php jquery wordpress advanced-custom-fields


    【解决方案1】:

    如果您要让用户创建任意数量的文本字段,则可以这样解决。假设您创建了一个Repeater-field,其中包含以下行:

    标题 - 组 - 说明

    然后您可以使用以下代码注册文本字段:

    <?php
    
    // check if the repeater field has rows of data
    if( have_rows('repeater_textfields') ):
    
        // loop through the rows of data
        while ( have_rows('repeater_textfields') ) : the_row();
    
        // store sub fields in variables
        $heading = the_sub_field('textfields_heading');
        $group = the_sub_field('textfields_group');
        $description = the_sub_field('textfields_description');
    
        // build the array
        $params = 
            array(
                "type" => "textfield",
                "holder" => "div",
                "class" => "",
                "heading" => __( $heading, "my-text-domain" ),
                "param_name" => "foo",
                "group" => __( $group, 'my-text-domain' ),
                "value" => __( "Default value.", "my-text-domain" ),
                "description" => __( $description, "my-text-domain" )
            );
    
        // register the textfield
        vc_map( $params );
    
        endwhile;
    
    endif;
    
    ?>
    

    您的中继器和中继器子字段的名称当然必须进行编辑以匹配您正在使用的名称。

    【讨论】:

    • 谢谢,想想在做了几个小时的研究之后,我可能得到了需要的错误。我正在编辑上面的代码以提供更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2017-09-26
    • 2014-09-22
    • 2018-07-17
    • 2019-03-30
    相关资源
    最近更新 更多