联系表单 7 自定义标签未发送

Contact form 7 custom tag not send

提问人:No' no 提问时间:10/12/2023 更新时间:10/12/2023 访问量:15

问:

我正在尝试使用联系表格 7 通过邮件从自定义帖子类型发送帖子列表。

我的客户想要一个选项卡系统,用户可以在其中检查他们想要的文档。这些文件来自 CPT。

我制作了我的功能,它在前端显示得很好,但它没有在邮件中发送。

你能告诉我如何解决我的问题吗?

谢谢

<?php 

// Fonction pour ajouter la balise de formulaire personnalisée
function custom_add_form_tag_documents() {
    wpcf7_add_form_tag( 'documents', 'custom_documents_form_tag_handler', true );
}
add_action( 'wpcf7_init', 'custom_add_form_tag_documents' );


function custom_documents_form_tag_handler($tag) {
    $tag = new WPCF7_FormTag($tag);

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

    $documents = '';
    $typesDoc = get_terms([
        'taxonomy' => 'types',
        'exclude'  => array('51', '53', '55'),
    ]);

    foreach ($typesDoc as $categorieDocument) {
        $documents .= '<div id="documents-' . $categorieDocument->slug . '" class="ongletDocuments">';
        $documents .= '<input class="onglet" id="' . $categorieDocument->slug . '" type="checkbox"><label class="has-h-5-size-font-size" for="' . $categorieDocument->slug . '">' . $categorieDocument->name . '</label>';
        $documents .= '<ul class="list-documents hide" id="list-' . $categorieDocument->slug . '">';
        $docsArgs = array(
            'post_type'      => 'documentation',
            'post_status'    => 'publish',
            'posts_per_page' => -1,
            'orderby'        => 'title',
            'order'          => 'ASC',
            'tax_query'      => array(
                array(
                    'taxonomy' => 'types',
                    'field'    => 'term_id',
                    'terms'    => $categorieDocument->term_id,
                ),
            ),
        );
        $i = 0;
        $query = new WP_Query($docsArgs);
        if ($query->have_posts()):
            while ($query->have_posts()) : $query->the_post();
                $post_title = get_the_title();
                $checkbox_id = $categorieDocument->slug . '-doc-' . $i;
                $documents .= '<li class="documentPDF"><input class="monDocument" type="checkbox" id="' . $checkbox_id . '" name="document-checkbox[]" value="' . esc_attr($post_title) . '"><label for="' . $checkbox_id . '">' . $post_title . '</label></li>';
                $i++;
            endwhile;
            wp_reset_query();
        endif;
        $documents .= '</ul>';
        $documents .= '</div>';
    }


    $documents .= '<input type="hidden" name="liste-documents" class="wpcf7-liste-documents" value="" />';

    return $documents;
}

// JavaScript pour capturer les documents sélectionnés
function custom_add_js_script() {
    ?>
    <script type="text/javascript">
        document.addEventListener('wpcf7submit', function (event) {
            if ('c59df4a' === event.detail.contactFormId) { // id de mon formulaire
                var selectedDocuments = [];
                var checkboxes = document.querySelectorAll('input.monDocument:checked');

                checkboxes.forEach(function (checkbox) {
                    selectedDocuments.push(checkbox.value);
                });

                var documentField = document.querySelector('input.wpcf7-liste-documents');
                if (documentField) {
                    documentField.value = selectedDocuments.join(', ');
                }
            }
        }, false);
    </script>
    <?php
}

add_action('wp_footer', 'custom_add_js_script');

// Hook pour inclure les documents sélectionnés dans l'e-mail
function custom_wpcf7_mail_callback($components, $contact_form) {
    if ($contact_form->id() == 'c59df4a') { // id de mon formulaire
        $submission = WPCF7_Submission::get_instance();
        if ($submission) {
            $data = $submission->get_posted_data();
            $document_list = isset($data['liste-documents']) ? $data['liste-documents'] : '';
            $components['body'] = str_replace('[liste-documents]', $document_list, $components['body']);
        }
    }
    return $components;
}

add_filter('wpcf7_mail_components', 'custom_wpcf7_mail_callback', 10, 2);


?>
wordpress 电子邮件 联系表-7

评论


答: 暂无答案