提问人:No' no 提问时间:10/12/2023 更新时间:10/12/2023 访问量:15
联系表单 7 自定义标签未发送
Contact form 7 custom tag not send
问:
我正在尝试使用联系表格 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);
?>
答: 暂无答案
评论