【问题标题】:Write to a php file via wordpress通过 wordpress 写入 php 文件
【发布时间】:2015-10-06 13:50:27
【问题描述】:

我已经建立了一个网页,可以向我工作的公司的员工发送短信。随着不断添加和删除新员工,我想将此应用程序与 wordpress 集成,无需编辑代码即可管理员工。

每个帖子都将包含用户的姓名和电话号码。该名称将作为用户联系的选项被拉入网页。提交表单后,它将转到运行 if/else 的 php 表单以查找员工并将该员工与其电话号码匹配,如下所示:

//Who the text message is to, Establish their phone #
if($employee == 'brad'):
     $text_to[] = '+15555555555';
elseif ($employee == 'mary'):
     $text_to[] = '+15555555555'; 
elseif ($employee == 'tom'):
     $text_to[] = '+15555555555'; 
elseif ($employee == 'bill'):
     $text_to[] = '+15555555555'; 
elseif ($employee == 'joe'):
endif;

我不仅希望能够通过循环从 wordpress 中提取这些名称以显示到我的页面上,还希望能够添加或删除新条目以及他们的电话号码,到这个 php 联系表

我知道如何遍历 wordpress 帖子以在页面上显示名称。我想知道是否也可以使用此数据来修改此联系表,如果可以,如何设置。每次有人为 Joe 编辑 wordpress 条目时,PHP 表单都会获取此更新,因此当 Joe 收到消息时,它会找到他的电话号码并将消息发送给他。

非常感谢任何帮助。我还应该注意,我正在使用 Twilio 发送短信。

【问题讨论】:

  • 为什么不把电话号码保存为元值呢?它将附加到员工身上,因此您可以使用 get_post_meta() 而无需执行任何条件...
  • @rnevius, get_post_meta 是一个糟糕的解决方案,因为它要求每个员工都有自己的职位。这肯定是难以管理和尴尬的。将所有这些数据存储在数据库表中会更好。

标签: php wordpress forms


【解决方案1】:

使用 DMBS 效果很好,但不是唯一的解决方案。

包括“users.inc”; // 平面文件创建数组 $userList 这可能是复杂结构的数组( ofArrays )

[假设 $userList = array($user => $phone, ...); ] 然后 foreach( $userList as $user => $phone) { // process($user, $phone); }

【讨论】:

  • 这是一个糟糕的解决方案,因为这个 php 文件仍然需要随着员工的添加、编辑和删除而更新,而且使用数据库更容易做到这一点。
  • 同意,但无论如何,必须更新一些内容,并且可以轻松地将平面文件导出到其他独立位置。在我看来,选择性问题是一个更大的问题,因此 SELECT username, phone FROM users WHERE dept = "xxx" AND location = "yyy" ;
  • 你是说查询数据库很困难吗?您是否还建议数据库难以导出?
  • 两者都没有——只是要做更多的工作。我的评论重新选择性针对的是平面文件解决方案:)
【解决方案2】:

感谢您尝试自己解决一个简单的问题。很明显,您是数据库概念的新手,坦率地说,您这样做是错误的。

让我们谈谈如何改进您的初始方法:

每个帖子都会包含用户的姓名和电话号码。

也许我们有一个数据库表来存储员工信息,而不是帖子。

您会发现大量关于数据库的信息,以及如何通过简单的 google 搜索将它们与您的 wordpress 帐户一起使用。

我不仅希望能够通过循环从 wordpress 中提取这些名称以显示到我的页面上,而且还希望能够在此 php 联系表单中添加或删除新条目及其电话号码。

同样,如果您有一个数据库来存储员工信息,这是基本的。

例如,employees 数据库表可能具有以下列:

  • 身份证
  • 姓名
  • 电话
  • created_at
  • updated_at

由于PHP 内置了与MYSQL 数据库通信的函数(这很可能是WordPress 已经在使用的),您可以执行以下操作:

获取所有员工数据

SELECT * FROM employees

获取某个员工的数据

SELECT * FROM employees WHERE name = '$name'

$name 是一个变量,可以通过来自 WordPress 表单的POST 请求设置

更新某个员工的数据

UPDATE employees SET phone = '+15555555555' WHERE name = '$name'

删除某个员工的数据

DELETE FROM employees WHERE id = 5

您还可以执行以下操作:

SELECT * FROM employees WHERE created_at > '3/1/2015'

这将返回在3/1/15 之后添加的所有员工。

【讨论】:

  • 非常感谢您抽出宝贵时间为我详细说明。我还在消化你写的东西,但如果我理解你的解决方案,你建议我手动创建一个数据库,然后手动编辑该数据库条目。那是对的吗?如果是这样,是否可以只使用 wordpress 用于存储帖子数据的现有数据库来将此信息提取到联系表单中?这将是理想的,因为我希望任何 WP 用户都能够通过帖子创建/编辑/删除这些数据库条目。
  • @davevsdave,您可以创建新数据库或使用现有数据库。一个数据库可以有很多表。一个表可以是employees 之类的东西,该表的列可以是idname 等。WordPress 有许多表,包括一个用于帖子的表、另一个用于用户的表、另一个用于 cmets 等。我是什么建议是为员工创建一个表,创建一个 wordpress 表单来添加/更新/删除员工。然后,您可以将此信息提取到您的联系表格中。基本上,您想写入一个 php 文件。相反,写入数据库。从该数据库中提取。
  • 另外,如果您不知道如何处理来自 wordpress 表单的 POST 请求,请查看:codex.wordpress.org/Plugin_API/Action_Reference/…
  • 如果您不熟悉表单操作,请查看以下内容:w3schools.com/tags/att_form_method.asp
  • 需要明确的是,您将手动创建表,但您永远不会手动编写/编辑/更新它。所有数据库表的更改都将通过用户输入自动完成。如果用户想要添加员工,他/她将填写表格并单击提交按钮。新添加的员工将在数据库表中,因此可以发送消息。您必须自己实现表单处理程序。我建议学习这通常是如何通过纯 html 和 php 完成的,然后一旦你理解了这一点,就继续学习 wordpress 最佳实践。另外,不客气。 =)
【解决方案3】:

所以你们所有的建议都是有帮助的。我可能没有尽可能清楚地知道我真的需要通过 wordpress 帖子来创建/编辑/删除条目。我可以通过执行以下操作来设置它:

//pull variables from html form input. Employee variables are post ID's that I will then be able to use to retrieve the post_content which contains their phone numbers
   $employee1 = $_POST['employeeName1'];
   $employee2 = $_POST['employeeName2'];
   $employee3 = $_POST['employeeName3'];
   $customMsg = $_POST["textMessage"];

//Create array from above variables and exclude any that lack post data
$employees = array($employee1, $employee2, $employee3);
$setEmployeeIDs = array();
foreach ($employees as $employee) {
    if (!empty($employee)) {
        $setEmployeeIDs[] = $employee;
    }
}

$servername = "xxxx";
$username = "xxxx";
$password = "xxxx";
$dbname = "xxxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//Get array of Phone Numbers connected to each ID and add to array
$sql = "SELECT * FROM wp_posts WHERE ID IN (".implode(',',$setEmployeeIDs).")";
$result = $conn->query($sql);
$phoneNumbers = array();
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
       $phoneNumbers[] = $row["post_content"] ;
    }
} else {
    echo "0 results";
}
$conn->close();

总而言之,我使用 wordpress 将这些数据发布/编辑/删除为帖子,然后将从网页中选择的 ID 发送到 php 表单,然后能够使用 SQL 数据库从 SQL 数据库中检索电话号码拉斐尔的方向。

【讨论】:

  • 我也意识到这个问题的标题具有误导性。应该是“如何根据 PHP 联系表单中的 Post ID 提取 SQL 数据”而不是“通过 wordpress 写入 php 文件”。但是,在 Raphael 发布他的答案并将我送到正确的方向之前,我真的不知道这将是我需要去的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2014-10-22
  • 2013-03-18
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多