Плагин WordPress Contact Form 7 (CF7), как добавлять атрибуты данных для выбора параметров поля - PullRequest
0 голосов
/ 22 марта 2020

У меня есть настраиваемое поле CF / select: [select * pcname]

Я использую эту функцию для добавления значений в поле:

function thebox_add_cf7_select_product_list( $tag, $unused ) {  

    if ( $tag['name'] != 'pcname' ) {
        return $tag;  
    }

    $args = array ( 'post_type' => 'my_products',                      
                    'orderby' => 'title',  
                    'order' => 'ASC',
                    'posts_per_page' => -1
                );  
    $products = get_posts($args);  

    if ( ! $products )  
        return $tag;  

    foreach ( $products as $product ) {  

        $tag['raw_values'][] = $product->post_title;  
        $tag['values'][] = $product->post_title;  
        $tag['labels'][] = $product->post_title;  

    }  


    return $tag;  
}  
add_filter( 'wpcf7_form_tag', 'thebox_add_cf7_select_product_list', 10, 2);  

Это прекрасно работает. В результате я получаю что-то вроде этого:

<select name="pcname" class="wpcf7-form-control wpcf7-select"">
<option value="Product A">Product A</option>
<option value="Product B">Product B</option>
<option value="Product C">Product C</option>
....
</select>

Но теперь мне нужно добавить дополнительную информацию к каждой опции, такую ​​как Product-ID и Product-Main-Category. Поэтому я хочу использовать атрибуты данных, но я не знаю, как добавить их в мою функцию wpcf7_form_tag выше? Как можно добавить атрибуты данных к параметрам моего поля выбора?

Вывод должен выглядеть следующим образом:

 <select name="pcname" class="wpcf7-form-control wpcf7-select"">
    <option value="Product A" data-id="1" data-cat="Category A">Product A</option>
    <option value="Product B" data-id="2" data-cat="Category B">Product B</option>
    <option value="Product C" data-id="3" data-cat="Category B">Product C</option>
    ....
 </select>

1 Ответ

0 голосов
/ 23 марта 2020

Попробуйте использовать этот код фильтра CF7 в функциях. php

add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
    $str_pos = strpos( $content, 'name="unique-name"' ); //name='yourfield name'
    if ( $str_pos !== false ) {
        $content = substr_replace( $content, ' data-attr="custom" data-msg="Foo Bar 1" ', $str_pos, 0 );
    }
    return $content;
}
...