我在我的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:
action="#"
带有唯一字段的隐藏输入来标识您的表单,并在您的函数文件中选择一个函数来获取发布操作。if($_POST['unique']){ require_once 'yourfile.php'; //or your form process code here }
action="#"
并放置代码以处理模板文件中的帖子(不是WP方式,但有助于防止加载与页面无关的代码加载。
两种方式都将为您加载wp,而无需手动加载。