У меня есть эта контактная форму на php с такими функциями: имя (обязательно), адрес электронной почты (обязательно), телефон (не обязательно) и сообщение (обязательно).Контактный формуляр не соответствует условиям
Оригинальный код:
<?php
//contact form
function cs_theme_contact_form_shortcode($atts)
{
extract(shortcode_atts(array(
"id" => "contact_form",
"top_margin" => "none",
"el_class" => ""
), $atts));
$output = "";
$output .= '<form class="contact-form ' . ($top_margin!="none" ? esc_attr($top_margin) : '') . ($el_class!="" ? ' ' . esc_attr($el_class) : '') . '" id="' . esc_attr($id) . '" method="post" action="#">
<div class="vc_row wpb_row vc_inner">
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<div class="block">
<input class="text_input" name="name" type="text" value="' . esc_html__("Your Name *", 'carservice') . '" placeholder="' . esc_html__("Your Name *", 'carservice') . '">
</div>
<div class="block">
<input class="text_input" name="email" type="text" value="' . esc_html__("Your Email *", 'carservice') . '" placeholder="' . esc_html__("Your Email *", 'carservice') . '">
</div>
<div class="block">
<input class="text_input" name="phone" type="text" value="' . esc_html__("Your Phone", 'carservice') . '" placeholder="' . esc_html__("Your Phone", 'carservice') . '">
</div>
</fieldset>
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<div class="block">
<textarea class="margin_top_10" name="message" placeholder="' . esc_html__("Message *", 'carservice') . '">' . __("Message *", 'carservice') . '</textarea>
</div>
</fieldset>
</div>
<div class="vc_row wpb_row vc_inner margin-top-30">
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<p>' . __("We will contact you within one business day.", 'carservice') . '</p>
</fieldset>
<fieldset class="vc_col-sm-6 wpb_column vc_column_container align-right">
<input type="hidden" name="action" value="theme_contact_form">
<input type="hidden" name="id" value="' . esc_attr($id) . '">
<div class="vc_row wpb_row vc_inner margin-top-20 padding-bottom-20">
<a class="more submit-contact-form" href="#" title="' . esc_html__("SEND MESSAGE", 'carservice') . '"><span>' . __("SEND MESSAGE", 'carservice') . '</span></a>
</div>
</fieldset>
</div>
</form>';
return $output;
}
add_shortcode("cs_contact_form", "cs_theme_contact_form_shortcode");
//visual composer
function cs_theme_contact_form_vc_init()
{
vc_map(array(
"name" => __("Contact form", 'carservice'),
"base" => "cs_contact_form",
"class" => "",
"controls" => "full",
"show_settings_on_create" => true,
"icon" => "icon-wpb-layer-contact-form",
"category" => __('Carservice', 'carservice'),
"params" => array(
array(
"type" => "textfield",
"class" => "",
"heading" => __("Id", 'carservice'),
"param_name" => "id",
"value" => "contact_form",
"description" => __("Please provide unique id for each contact form on the same page/post", 'carservice')
),
array(
"type" => "dropdown",
"class" => "",
"heading" => __("Top margin", 'carservice'),
"param_name" => "top_margin",
"value" => array(__("None", 'carservice') => "none", __("Page (small)", 'carservice') => "page-margin-top", __("Section (large)", 'carservice') => "page-margin-top-section")
),
array(
'type' => 'textfield',
'heading' => __('Extra class name', 'js_composer'),
'param_name' => 'el_class',
'description' => __('If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer')
)
)
));
}
add_action("init", "cs_theme_contact_form_vc_init");
//contact form submit
function cs_theme_contact_form()
{
ob_start();
global $theme_options;
$result = array();
$result["isOk"] = true;
if($_POST["name"]!="" && $_POST["name"]!=__("Your Name *", 'carservice') && $_POST["email"]!="" && $_POST["email"]!=__("Your Email *", 'carservice') && preg_match("#^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$#", $_POST["email"]) && $_POST["message"]!="" && $_POST["message"]!=__("Message *", 'carservice'))
{
$values = array(
"name" => $_POST["name"],
"phone" => ($_POST["phone"]!=__("Your Phone", 'carservice') ? $_POST["phone"] : ""),
"email" => $_POST["email"],
"message" => $_POST["message"]
);
if((bool)ini_get("magic_quotes_gpc"))
$values = array_map("stripslashes", $values);
$values = array_map("htmlspecialchars", $values);
$headers[] = 'From: ' . $values["name"] . ' <' . $values["email"] . '>' . "\r\n";
$headers[] = 'Content-type: text/html';
$subject = $theme_options["cf_email_subject"];
$subject = str_replace("[name]", $values["name"], $subject);
$subject = str_replace("[email]", $values["email"], $subject);
$subject = str_replace("[phone]", $values["phone"], $subject);
$subject = str_replace("[message]", $values["message"], $subject);
$body = $theme_options["cf_template"];
$body = str_replace("[name]", $values["name"], $body);
$body = str_replace("[email]", $values["email"], $body);
$body = str_replace("[phone]", $values["phone"], $body);
$body = str_replace("[message]", $values["message"], $body);
$body = str_replace("[form_data]", "", $body);
if(wp_mail($theme_options["cf_admin_name"] . ' <' . $theme_options["cf_admin_email"] . '>', $subject, $body, $headers))
$result["submit_message"] = __("Thank you for contacting us", 'carservice');
else
{
$result["isOk"] = false;
$result["error_message"] = $GLOBALS['phpmailer']->ErrorInfo;
$result["submit_message"] = __("Sorry, we can't send this message", 'carservice');
}
}
else
{
$result["isOk"] = false;
if($_POST["name"]=="" || $_POST["name"]==__("Your Name *", 'carservice'))
$result["error_name"] = __("Please enter your name.", 'carservice');
if($_POST["email"]=="" || $_POST["email"]==__("Your Email *", 'carservice') || !preg_match("#^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$#", $_POST["email"]))
$result["error_email"] = __("Please enter valid e-mail.", 'carservice');
if($_POST["message"]=="" || $_POST["message"]==__("Message *", 'carservice'))
$result["error_message"] = __("Please enter your message.", 'carservice');
}
$system_message = ob_get_clean();
$result["system_message"] = $system_message;
echo @json_encode($result);
exit();
}
add_action("wp_ajax_theme_contact_form", "cs_theme_contact_form");
add_action("wp_ajax_nopriv_theme_contact_form", "cs_theme_contact_form");
?>
Так я хочу, чтобы внести некоторые изменения и добавить больше функций, как это: имя (обязательно), адрес электронной почты (обязательно), телефон (обязательно), адрес (обязательно) и сообщения (не требуется).
тогда я изменил код так:
<?php
//contact form
function cs_theme_contact_form_shortcode($atts)
{
extract(shortcode_atts(array(
"id" => "contact_form",
"top_margin" => "none",
"el_class" => ""
), $atts));
$output = "";
$output .= '<form class="contact-form ' . ($top_margin!="none" ? esc_attr($top_margin) : '') . ($el_class!="" ? ' ' . esc_attr($el_class) : '') . '" id="' . esc_attr($id) . '" method="post" action="#">
<div class="vc_row wpb_row vc_inner">
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<div class="block">
<input class="text_input" name="name" type="text" value="' . esc_html__("Nombre Completo *", 'carservice') . '" placeholder="' . esc_html__("Nombre Completo *", 'carservice') . '">
</div>
<div class="block">
<input class="text_input" name="email" type="text" value="' . esc_html__("Correo Electronico *", 'carservice') . '" placeholder="' . esc_html__("Correo Electronico *", 'carservice') . '">
</div>
<div class="block">
<input class="text_input" name="phone" type="text" value="' . esc_html__("Número de Celular *", 'carservice') . '" placeholder="' . esc_html__("Número de Celular *", 'carservice') . '">
</div>
<div class="block">
<input class="text_input" name="address" type="text" value="' . esc_html__("Dirección *", 'carservice') . '" placeholder="' . esc_html__("Dirección *", 'carservice') . '">
</div>
</fieldset>
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<div class="block">
<textarea class="margin_top_10" name="message" placeholder="' . esc_html__("Mensaje", 'carservice') . '">' . __("Mensaje", 'carservice') . '</textarea>
</div>
</fieldset>
</div>
<div class="vc_row wpb_row vc_inner margin-top-30">
<fieldset class="vc_col-sm-6 wpb_column vc_column_container">
<p>' . __("Contactaremos contigo lo más pronto posible.", 'carservice') . '</p>
</fieldset>
<fieldset class="vc_col-sm-6 wpb_column vc_column_container align-right">
<input type="hidden" name="action" value="theme_contact_form">
<input type="hidden" name="id" value="' . esc_attr($id) . '">
<div class="vc_row wpb_row vc_inner margin-top-20 padding-bottom-20">
<a class="more submit-contact-form" href="#" title="' . esc_html__("ENVIAR", 'carservice') . '"><span>' . __("ENVIAR", 'carservice') . '</span></a>
</div>
</fieldset>
</div>
</form>';
return $output;
}
add_shortcode("cs_contact_form", "cs_theme_contact_form_shortcode");
//visual composer
function cs_theme_contact_form_vc_init()
{
vc_map(array(
"name" => __("Contact form", 'carservice'),
"base" => "cs_contact_form",
"class" => "",
"controls" => "full",
"show_settings_on_create" => true,
"icon" => "icon-wpb-layer-contact-form",
"category" => __('Carservice', 'carservice'),
"params" => array(
array(
"type" => "textfield",
"class" => "",
"heading" => __("Id", 'carservice'),
"param_name" => "id",
"value" => "contact_form",
"description" => __("Please provide unique id for each contact form on the same page/post", 'carservice')
),
array(
"type" => "dropdown",
"class" => "",
"heading" => __("Top margin", 'carservice'),
"param_name" => "top_margin",
"value" => array(__("None", 'carservice') => "none", __("Page (small)", 'carservice') => "page-margin-top", __("Section (large)", 'carservice') => "page-margin-top-section")
),
array(
'type' => 'textfield',
'heading' => __('Extra class name', 'js_composer'),
'param_name' => 'el_class',
'description' => __('If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer')
)
)
));
}
add_action("init", "cs_theme_contact_form_vc_init");
//contact form submit
function cs_theme_contact_form()
{
ob_start();
global $theme_options;
$result = array();
$result["isOk"] = true;
if($_POST["name"]!="" && $_POST["name"]!=__("Nombre Completo *", 'carservice') && $_POST["email"]!="" && $_POST["email"]!=__("Correo Electronico *", 'carservice') && preg_match("#^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$#", $_POST["email"]) && $_POST["phone"]!="" && $_POST["phone"]!=__("Número de Celular", 'carservice') && preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{3}$/", $_POST["phone"]) && $_POST["address"]!="" && $_POST["address"]!=__("Dirección *", 'carservice'))
{
$values = array(
"name" => $_POST["name"],
"phone" => $_POST["phone"],
"email" => $_POST["email"],
"address" => $_POST["address"],
"message" => ($_POST["message"]!=__("Mensaje", 'carservice') ? $_POST["message"] : "")
);
if((bool)ini_get("magic_quotes_gpc"))
$values = array_map("stripslashes", $values);
$values = array_map("htmlspecialchars", $values);
$headers[] = 'From: ' . $values["name"] . ' <' . $values["email"] . '>' . "\r\n";
$headers[] = 'Content-type: text/html';
$subject = str_replace("[name]", $values["name"], $subject);
$subject = str_replace("[email]", $values["email"], $subject);
$subject = str_replace("[phone]", $values["phone"], $subject);
$subject = str_replace("[address]", $values["address"], $subject);
$subject = str_replace("[message]", $values["message"], $subject);
$body = $theme_options["cf_template"];
$body = str_replace("[name]", $values["name"], $body);
$body = str_replace("[email]", $values["email"], $body);
$body = str_replace("[phone]", $values["phone"], $body);
$body = str_replace("[address]", $values["address"], $body);
$body = str_replace("[message]", $values["message"], $body);
$body = str_replace("[form_data]", "", $body);
if(wp_mail($theme_options["cf_admin_name"] . ' <' . $theme_options["cf_admin_email"] . '>', $subject, $body, $headers))
$result["submit_message"] = __("Gracias por preferirnos. :)", 'carservice');
else
{
$result["isOk"] = false;
$result["error_message"] = $GLOBALS['phpmailer']->ErrorInfo;
$result["submit_message"] = __("Lo siento, no podemos enviar el mensaje por el momento. :()", 'carservice');
}
}
else
{
$result["isOk"] = false;
if($_POST["name"]=="" || $_POST["name"]==__("Nombre Completo *", 'carservice'))
$result["error_name"] = __("Por favor ingrese su nombre completo.", 'carservice');
if($_POST["email"]=="" || $_POST["email"]==__("Correo Electronico *", 'carservice') || !preg_match("#^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$#", $_POST["email"]))
$result["error_email"] = __("Por favor ingresa un correo electronico válido.", 'carservice');
if($_POST["phone"]=="" || $_POST["phone"]==__("Número de Celular *", 'carservice') || !preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{3}$/", $_POST["phone"]))
$result["error_phone"] = __("Por favor ingresa un número de celular válido.", 'carservice');
if($_POST["address"]=="" || $_POST["address"]==__("Dirección *", 'carservice'))
$result["error_address"] = __("Por favor tu dirección.", 'carservice');
}
$system_message = ob_get_clean();
$result["system_message"] = $system_message;
echo @json_encode($result);
exit();
}
add_action("wp_ajax_theme_contact_form", "cs_theme_contact_form");
add_action("wp_ajax_nopriv_theme_contact_form", "cs_theme_contact_form");
?>
Дело им пытаются сделать, это добавить некоторые ограничения, как это: Имя должно быть заполнено, если нет, то появится какое-то сообщение говоря: «Пожалуйста, напишите свое имя «; то же самое с электронной почтой (оба работают в исходной форме контакта и в модифицированном коде). Я попробовал то же самое с телефоном (телефон должен содержать только цифры, если нет, то появится сообщение «напишите допустимый номер», но когда я тестирую и пишу «98231176a», сообщение не появляется, и та же ошибка возникает с адресом и, очевидно, вся информация не передается электронной почты администратора, то потому что телефон не является действительным у меня мало знаний PHP, если кто-то может помочь мне, пожалуйста, спасибо
Почему вы смешивания HTML с функцией декларации? Это должно быть в представлении. – Fuser97381
Извините im new в этой вещи. Весь этот код и другие пришли с темой, которую я покупаю –
@March_one проверить мой ответ, это может помочь –