gpt4 book ai didi

wordpress - 如何制作联系表单7自定义字段?

转载 作者:行者123 更新时间:2023-12-02 01:53:18 25 4
gpt4 key购买 nike

如何在 WordPress 联系表单 7 中自定义表单标签然后将结果添加到正在发送的电子邮件中?

最佳答案

好吧,我自己解决了这个问题并想分享我的代码。

在此示例中,我们将创建一个自定义标签,通过添加自定义标签来显示 6 个带有最新帖子的复选框:

[posts show:12]

我们必须 Hook 3 个函数。

  • 用于注册“posts”标签
  • 另一个“清理”答案的答案(因为它们是一个数组)
  • 另一个用于注册“邮件”部分中使用的“帖子”标签

要点如下:

https://gist.github.com/eduardoarandah/83cad9227bc0ab13bf845ab14f2c4dad

这是代码:

<?php
/**
* Contact form 7
* custom tag: [posts show:12]
* show parameter is optional
*/
add_action('wpcf7_init', 'custom_add_form_tag_posts');

function custom_add_form_tag_posts()
{
wpcf7_add_form_tag('posts', 'custom_posts_form_tag_handler');
}

function custom_posts_form_tag_handler($tag)
{
//get current (local) date
$blogtime = current_time('mysql');
list( $today_year, $today_month, $today_day, $hour, $minute, $second ) = preg_split('([^0-9])', $blogtime);

//how may to show? (default 6)
$numberPosts=6;
$show=$tag->get_option('show', 'int', true);

$args = [
'post_type' => 'posts',
'posts_per_page'=> $show ? $show : $numberPosts,
'order' => 'ASC'
];

// The Query
$the_query = new WP_Query($args);

// The Loop
$rows=[];
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post();
$rows[]=[
'id' =>get_the_ID(),
'title' =>get_the_title(),
];
}
wp_reset_postdata();
}
// debug your query
// echo $the_query->request;

// Structure
$res="<div class='12u'><h3 class='mb-0'>No posts to display</h3></div>";

if ($rows) {
$res="<div class='row'>";

foreach ($rows as $row) {
$res.="<div>";
$res.='<input type="checkbox" name="posts[]" value="'.esc_html($row['title']).'" id="'.esc_html($row['id']).'" />';
$res.='<label for="'.esc_html($row['id']).'">'.esc_html($row['title']).' <br>';
$res.= esc_html($row['title'])
$res.=' </label>';
$res.="</div>";
}
$res.="</div>";
}

return $res;
}

/**
* When saving, change the array to a comma, separated list, just to make it easier
*/
add_filter("wpcf7_posted_data", function ($posted_data) {
//'posts' is the name that you gave the field in the CF7 admin.
if (isset($posted_data['posts'])) {
$posted_data['posts'] = implode(", ", $posted_data['posts']);
}

return $posted_data;
});

/**
* A tag to be used in "Mail" section so the user receives the special tag
* [posts]
*/
add_filter('wpcf7_special_mail_tags', 'wpcf7_tag_post', 10, 3);
function wpcf7_tag_post($output, $name, $html)
{
$name = preg_replace('/^wpcf7\./', '_', $name); // for back-compat

$submission = WPCF7_Submission::get_instance();

if (! $submission) {
return $output;
}

if ('posts' == $name) {
return $submission->get_posted_data("posts");
}

return $output;
}

关于wordpress - 如何制作联系表单7自定义字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53754577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com