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 中处理表单的最佳方法是发布到同一个 url:

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

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

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