我在wordpress网站的主题functions.php中运行某些代码时遇到问题。
我创建了一个具有表单的页面, 该表单的action属性应该将数据提交给主题functions.php
提交表单后, 页面将重定向到functions.php文件, 但不执行任何操作。
这是表格的代码
<
div>
<
form name="formSenda" method="POST" action="../wp-content/themes/storefront/functions.php">
<
input type="text" placeholder="name" id="nameSenda" name="nameSenda">
<
input type="email" placeholder="emailSenda" id="emailSenda" name="emailSenda">
<
input type="submit" value="http://www.srcmini.com/Check" name="submitSenda">
<
/form>
<
/div>
这是functions.php中的代码
function inSenda(&
$na, &
$em){
$message = "Hi $na, is your email $em?";
$headers = "From Fly Gadgets \r\n";
mail($em, "Invoice", $message, $headers);
echo "<
script type='text/javascript'>
document.location = 'categories';
<
/script>
";
};
$nameSenda = $_POST['nameSenda'];
$emailSenda = $_POST['emailSenda'];
if(!empty($nameSenda) &
&
!empty($emailSenda)){
inSenda($nameSenda, $emailSenda);
}
谢谢你的时间。
#1你可以使用AJAX请求来执行此操作。
从表单中删除操作属性:
<
div>
<
form name="formSenda" method="POST">
<
input type="text" placeholder="name" id="nameSenda" name="nameSenda">
<
input type="email" placeholder="emailSenda" id="emailSenda" name="emailSenda">
<
input type="submit" value="http://www.srcmini.com/Check" name="submitSenda">
<
/form>
<
/div>
添加以下JavaScript代码以发送请求:
<
script type="text/javascript">
(function($) {
$(function() {
function handleFormSubmission(e) {
$.ajax({
type: 'POST', // Replace with the url to your own `/wp-admin/admin-ajax.php`
url: 'https://example.com/wp-admin/admin-ajax.php', data: {
// Action name should be the same on the backend
action: 'send_invoice', }, success: function() {
document.location = 'categories';
}, });
}$('form[name="formSenda"]').on('submit', handleFormSubmission);
});
})(jQuery);
<
/script>
然后, 挂接到wp_ajax_和wp_ajax_nopriv_来处理你的自定义AJAX端点。
- wp_ajax_对已登录的用户触发。
- wp_ajax_nopriv_处理来自未经身份验证的用户的请求(即is_user_logged_in()返回false时)。
因此, 在你的functions.php中:
<
?php
// where send_invoice matches the action name on the frontend
add_action( 'wp_ajax_send_invoice', 'yourchildtheme_handle_invoice' );
add_action( 'wp_ajax_nopriv_send_invoice', 'yourchildtheme_handle_invoice' );
/**
* Send the invoice via email
*
* @param string $na The name
* @param string $em The email
*/
function in_senda( $na, $em ) {
// Sanitize your fields!
$na = sanitize_text_field( $na );
$em = sanitize_email( $em );
$message = "Hi $na, is your email $em?";
$headers = "From Fly Gadgets \r\n";
mail( $em, 'Invoice', $message, $headers );
}/**
* Handle the contact form ajax request
*/
function yourchildtheme_handle_invoice() {
$name_senda = $_POST['nameSenda'];
$email_senda = $_POST['emailSenda'];
if ( ! empty( $name_senda ) &
&
! empty( $email_senda ) ) {
in_senda( $name_senda, $email_senda );
}
}
笔记我在你的in_senda()函数中添加了一些清理功能。你可以阅读有关验证, 清除和转义用户数据的更多信息。
研究WordPress Nonces也是一个好主意。食典规定:
[…]有助于保护URL和表单免遭某些类型的滥用, 恶意或其他形式的滥用。虽然使用mail()从WordPress网站发送电子邮件是完全可以的, 但你可能想看看wp_mail()。这是一个可插拔功能, 因此在某些情况下确实很有用。
免责声明:我尚未实际测试此代码。
#2【我如何使wordpress表单操作属性转到主题function.php并在那里执行代码】我在wordpress网站的主题functions.php中运行某些代码时遇到问题。
我创建了一个具有表单的页面, 该表单的action属性应该将数据提交给主题functions.php
提交表单后, 页面将重定向到functions.php文件, 但不执行任何操作。
这是表格的代码
<
div>
<
form name="formSenda" method="POST" action="../wp-content/themes/storefront/functions.php">
<
input type="text" placeholder="name" id="nameSenda" name="nameSenda">
<
input type="email" placeholder="emailSenda" id="emailSenda" name="emailSenda">
<
input type="submit" value="http://www.srcmini.com/Check" name="submitSenda">
<
/form>
<
/div>
这是functions.php中的代码
function inSenda(&
$na, &
$em){
$message = "Hi $na, is your email $em?";
$headers = "From Fly Gadgets \r\n";
mail($em, "Invoice", $message, $headers);
echo "<
script type='text/javascript'>
document.location = 'categories';
<
/script>
";
};
$nameSenda = $_POST['nameSenda'];
$emailSenda = $_POST['emailSenda'];
if(!empty($nameSenda) &
&
!empty($emailSenda)){
inSenda($nameSenda, $emailSenda);
}
谢谢你的时间。
#3你可以使用AJAX请求来执行此操作。
从表单中删除操作属性:
<
div>
<
form name="formSenda" method="POST">
<
input type="text" placeholder="name" id="nameSenda" name="nameSenda">
<
input type="email" placeholder="emailSenda" id="emailSenda" name="emailSenda">
<
input type="submit" value="http://www.srcmini.com/Check" name="submitSenda">
<
/form>
<
/div>
添加以下JavaScript代码以发送请求:
<
script type="text/javascript">
(function($) {
$(function() {
function handleFormSubmission(e) {
$.ajax({
type: 'POST', // Replace with the url to your own `/wp-admin/admin-ajax.php`
url: 'https://example.com/wp-admin/admin-ajax.php', data: {
// Action name should be the same on the backend
action: 'send_invoice', }, success: function() {
document.location = 'categories';
}, });
}$('form[name="formSenda"]').on('submit', handleFormSubmission);
});
})(jQuery);
<
/script>
然后, 挂接到wp_ajax_和wp_ajax_nopriv_来处理你的自定义AJAX端点。
- wp_ajax_对已登录的用户触发。
- wp_ajax_nopriv_处理来自未经身份验证的用户的请求(即is_user_logged_in()返回false时)。
因此, 在你的functions.php中:
<
?php
// where send_invoice matches the action name on the frontend
add_action( 'wp_ajax_send_invoice', 'yourchildtheme_handle_invoice' );
add_action( 'wp_ajax_nopriv_send_invoice', 'yourchildtheme_handle_invoice' );
/**
* Send the invoice via email
*
* @param string $na The name
* @param string $em The email
*/
function in_senda( $na, $em ) {
// Sanitize your fields!
$na = sanitize_text_field( $na );
$em = sanitize_email( $em );
$message = "Hi $na, is your email $em?";
$headers = "From Fly Gadgets \r\n";
mail( $em, 'Invoice', $message, $headers );
}/**
* Handle the contact form ajax request
*/
function yourchildtheme_handle_invoice() {
$name_senda = $_POST['nameSenda'];
$email_senda = $_POST['emailSenda'];
if ( ! empty( $name_senda ) &
&
! empty( $email_senda ) ) {
in_senda( $name_senda, $email_senda );
}
}
笔记我在你的in_senda()函数中添加了一些清理功能。你可以阅读有关验证, 清除和转义用户数据的更多信息。
研究WordPress Nonces也是一个好主意。食典规定:
[…]有助于保护URL和表单免遭某些类型的滥用, 恶意或其他形式的滥用。虽然使用mail()从WordPress网站发送电子邮件是完全可以的, 但你可能想看看wp_mail()。这是一个可插拔功能, 因此在某些情况下确实很有用。
免责声明:我尚未实际测试此代码。
推荐阅读
- 如何使用X主题修改wordpress网站上的类别页面()
- 如何有效地将WordPress评论显示在主页上()
- 如何编辑Divi主题的存档页面()
- 如何使用PHP编辑博客的作者格式()
- 如何在WordPress中动态显示大多数”最近的自定义分类”中的post()
- 如何删除由父主题生成的样式()
- CentOS 初体验八(传输本地文件到CentOS)
- Java16都快上线了,你该不会连Java8的特性都不会用吧()
- CentOS 初体验九(curl 的使用)