Wordpress 表单处理

Wordpress Form Processing

我在我的 wordpress 站点上创建了一个表单,一个用于处理位于 functions.php 中的数据的函数,以及一个操作 php 文件。我已经测试了处理功能并且知道它可以工作,但是我无法让所有东西与 wordpress 通信。

update_item_meta.php 位于我的主题目录中。

表单开始标记

<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-load.php位于主站根目录

如果有人能帮助我,我将不胜感激。如果我不得不猜测这是表单操作中 update_item_meta.php 或 update_item_meta.php 的路径问题,但我一直无法弄清楚。

action="/wp-content/themes/Avada/update_item_meta.php"

您显然不会直接调用 php 文件加载 wp,使用相对路径加载 wp 是有问题的。

在 wp 中处理表单的最佳方法是 post 到相同的 url:

  1. action="#" 带有隐藏输入的唯一字段以标识您的表单,并在您的函数文件中有一个函数来获取 post 操作....

    if($_POST['unique']){
      require_once 'yourfile.php';
      //or your form process code here
    }
    
  2. action="#" 并在模板文件中放置处理 post 的代码(不是 wp 方式,但有助于防止加载与页面。

两种方式都会为您加载 wp,而无需手动加载。