Custom Form Processing Issue

时间:2016-02-20 作者:nickyb

我在wordpress网站上创建了一个表单,一个处理函数中数据的函数。php和一个动作php文件。我已经测试了处理功能,知道它可以正常工作,但我在与wordpress进行通信时遇到了问题。

更新\\u item\\u meta。php位于我的主题目录中。

Form Opening Tag

<form method="post" id="project-info" action="/wp-content/themes/Avada/update_item_meta.php">

update_item_meta.php

<?php
//connect to WP
define(\'WP_USE_THEMES\', false);
require(\'../../../wp-load.php\');

//call function from functions.php to process form data
update_item_meta_data();
?>
注:wp负载。php位于主站点根目录中

如果有人能帮我,我会非常感激。如果我不得不猜测这是更新\\u item\\u meta的路径有问题。php的形式为action或update\\u item\\u meta。php,但我还没有弄明白。

1 个回复
SO网友:cybmeta

不要将表单发送到必须手动加载WordPress的自定义PHP脚本,而应该将from直接发送到WordPress页面。

你可以使用admin_post_{action} hook, 类似于admin-ajax.php works, 但用于处理GET和POST请求。

表格:

<form action="<?php echo admin_url( \'admin-post.php\' ); ?>" method="post">
  <input type="hidden" name="action" value="my_action">
  <input type="submit" value="Submit">
</form>
以及行动:

add_action( \'admin_post_my_action\', \'cyb_my_action\' );
add_action( \'admin_post_nopriv_my_action\', \'cyb_my_action\' );
function cyb_my_action() {
   // Process your form here
}
您也可以将表单发送到WordPress中的任何其他页面,并在中处理表单init 动作钩(或任何其他你认为更适合你需要的动作,但是init 通常是处理自定义表单的良好操作)。

例如,如果表单嵌入到任何类型的帖子(包括页面)中,则可以将表单发送到自身:

<form id="cyb-contact-form" action="<?php echo esc_url(get_the_permalink()); ?>" method="post">
</form>
他们,你可以在init 行动挂钩:

add_action( \'init\', \'cyb_process_my_form\' );
function cyb_process_my_form() {
   // Process your form here
}

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果