gpt4 book ai didi

php - 使用 PHP 将当前的 WordPress ID 获取到我的数据库中

转载 作者:行者123 更新时间:2023-11-29 11:20:05 25 4
gpt4 key购买 nike

创建我的第一个插件,它允许人们创建角色。这应该和在线角色扮演游戏差不多。这里的目标是让 WordPress 用户拥有多个链接到该特定用户的角色。以魔兽世界为例:您创建一个帐户,然后您可以创建多个角色,您可以删除或更新这些角色。

我正在尝试将数据库中有两个表放在一起。

第一个表 wp_users 有一个主键 (ID),我想将其用于与第二个表的主/外键关系。

第二个表,myth_char,只有两个字段。一个外键 (ID) 和一个名为 (char_name) 的 varchar。

因此,如果 user_id 为 5 的某人创建了几个角色:Thork、Mork 和 Spork,我希望将这些角色连接到 user_id 为 5 的用户。为了实现此目的,我使用了两个不同的 PHP 文件。

第一个文件包含一个表单,用户可以在其中插入角色名称。 这是我遇到问题的部分。我正在使用内置的 WordPress 函数 get_current_user_id,但它似乎没有获取用户 ID。我还创建了一个调用该函数的变量。

<?php
//THIS FUNCTION GRABS CURRENT USER ID
function get_current_user_id() {
if ( ! function_exists( 'wp_get_current_user' ) )
return 0;
$user = wp_get_current_user();
return ( isset( $user->ID ) ? (int) $user->ID : 0 );
}
// CALL THIS FUNCTION NOW WHILE THE USER IS HERE AND LOGGED IN. THEN THE NEXT PHP PAGE WILL REQUIRE THIS FUNCTION AND INSERT IT INTO THE DB TABLE.
$wpid = get_current_user_id();
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
<title>CREATE YOUR CHARACTER</title>
<link href="stylesheets/public.css" media="all"
rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<h1>CREATE YOUR CHARACTER HERE</h1>
</div>
<p>Please insert a name for your character.</p><br />

<form action="form_processor.php" method="post">
Character Name: <input type="text" name="charname" value"" /><br />
<br />
<input type ="submit" name ="submit" value="submit" />
</form>
</body>
</html>

第二个文件具有与数据库的连接和插入查询。它将角色名称插入到数据库表 myth_char_two 中,并且假设也插入 Wordpress 用户 ID。

<?php

require_once('/home/mythlarp/public_html/wp-content/plugins/character_creation/form.php');

function redirect_to($new_location) {
header("Location: " . $new_location);
}


//1. CONNECT TO DATABASE
$dbhost = "localhost";
$dbuser = "*****";
$dbpass = "*****";
$dbname = "*****";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

//2. GRAB INFORMATION FROM THE FORM IN "form.php" AND ALSO GRAB THE CURRENT WORDPRESS USER'S ID with the variable "$wpid".

// $charactername = if charactername is set to the form value then use the form value. Otherwise set it to nothing.

$charname = isset($_POST['charname']) ? $_POST['charname'] : "";
// This grabs the current Wordpress user ID from "form.php".


// 3.INSERT FORM VALUES INTO DB TABLE
$query = "INSERT INTO myth_char_two (";
$query .= "charname id";
$query .= ") VALUES (";
$query .= " '{$charname}', {$wpid}";
$query .= ")";
//$result calls the $connection and $query.
$result = mysqli_query($connection, $query);
// 4.TEST FOR QUERY ERROR.
if ($result) {
redirect_to("character_finish.php");
} else {
die("Database query failed.");
}

?>

此表单也位于与任何常规 WordPress 页面不同的页面上。现在它只是一个没有样式的常规 php 文件。这可能就是为什么它找不到任何 ID 的原因。不过,我尝试在常规主题页面之一上向自己显示它,但没有成功显示它。

最佳答案

Change the form like this so that alone as per your db file it will grab the charname and wpid.

您无需将该功能复制到您的页面中。您只需调用函数 get_current_user_id()

第一个文件(更改此)

删除:

Since this is already defined in Wordpress

 //THIS FUNCTION GRABS CURRENT USER ID
function get_current_user_id() {
if ( ! function_exists( 'wp_get_current_user' ) )
return 0;
$user = wp_get_current_user();
return ( isset( $user->ID ) ? (int) $user->ID : 0 );
}

Change the form

<form action="form_processor.php" method="post">
<input type="hidden" name="user_id" value="<?php echo $wpid; ?>" />
Character Name: <input type="text" name="charname" value"" /><br />
<br />
<input type ="submit" name ="submit" value="submit" />
</form>

第二个数据库文件(将此行添加到 $_POST['charname'] 的 isset 下方)

$wpid = isset($_POST['user_id']) ? $_POST['user_id'] : "";

Change the Insert Query

$query  = "INSERT INTO myth_char_two (";
$query .= "charname,id";
$query .= ") VALUES (";
$query .= " '{$charname}','{$wpid}'";
$query .= ")";

因此这会将 ID 插入数据库。

关于php - 使用 PHP 将当前的 WordPress ID 获取到我的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com