php - 在 PHP 中,如何在一个函数中重命名字符串并在第二个函数中使用结果
问题描述
如果这是超基本的,请原谅我,我对这一切都很陌生。
我正在尝试从 wordpress 数据库中获取字符串值(章节名称),使用 php 函数重命名该值,然后将重命名的值与其他一些变量连接以创建一个 member_id。
下面是我当前的代码(添加到functions.php文件中),我有两个问题:
- 从第一个功能开始,当我在页面/帖子中使用简码时,无论章节名称的值用于注册,
[member_chapter]
我总是得到。PG
如果我切换foreach语句的顺序,那么我总是得到,即无论数据库中实际的章节名称是什么BB
,我总是得到第一条语句的返回值。if
- 从第二个函数我从来没有得到chapter_id,而是结果总是like
FAL--2020-1007
,即它不添加从第一个函数生成的chapter_id 值
我真的很感激任何帮助。
/**
* Fetch chapter name and return as 2-character chapter_id
* Create shortcode for viewing chapter_id
*/
add_action('user_register', 'fetch_chapter');
function fetch_chapter(){
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
global $wpdb;
$result = $wpdb->get_results('SELECT meta_value FROM usermeta WHERE meta_key = \'chapter_name\' AND user_id = ' . $current_user->ID);
foreach($result as $row){
if ($row->meta_value = 'Peregrine') {
return $row->meta_value = 'PG';
}elseif ($row->meta_value = 'Barbary') {
return $row->meta_value = 'BB';
}else {
return $row->meta_value;
}
}
}
add_shortcode('member_chapter', 'fetch_chapter');
/**
* Generate unique_id
* Retrieve chapter_id
* Create member_id
* Add member_id to user_meta table
*/
add_action('user_register', 'generate_member_id');
function generate_member_id($user_id){
$unique_id = 1000 + $user_id;
$chapter_id = fetch_chapter();
$member_id = "FAL-" . $chapter_id . "-" . date("Y") . "-" . $unique_id;
update_user_meta($user_id, 'member_id', $member_id);
}
修改后的片段
add_action('user_register', 'fetch_chapter');
function fetch_chapter(){
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
global $wpdb;
$result = $wpdb->get_results('SELECT meta_value FROM usermeta WHERE meta_key = \'chapter_name\' AND user_id = '. $current_user->ID .' LIMIT 1');
if ($result[0]->meta_value == 'Peregrine') {
$result[0]->meta_value = 'PG';
}elseif ($result[0]->meta_value == 'Barbary') {
$result[0]->meta_value = 'BB';
}
return $result[0]->meta_value;
}
add_action('user_register', 'generate_member_id');
function generate_member_id($user_id){
$unique_id = 1000 + get_current_user_id();
$chapter_id = fetch_chapter();
$member_id = "FAL-" . $chapter_id . "-" . date("Y") . "-" . $unique_id;
return $member_id;
}
add_shortcode('member_id', 'generate_member_id');
解决方案
你有几个错误!在编写程序之前,请阅读有关程序语言的更多信息。见PHP 教程
在第一个函数中,您使用了赋值运算符(即是=
)而不是比较运算符(即==
或===
)。if
您必须在代码中使用的任何地方更改它。此外,您在foreach中使用 return 函数。这意味着您的foreach循环只运行一次然后返回。您必须使用 just if 而不是foreach并在您的 sql 中使用Limit 1 。或者在你的循环中做任何事情并避免else return blahblah
. 您的第二个问题与您的第一个问题有关,因为您返回的第一条记录可能$row->meta_value
为空。
推荐阅读
- python - 在 .之前和之后分隔文本
。(美人汤) - javascript - 在选择带有“datetime-local”输入的日期后,是否可以将时间设置为默认值?
- java - JAVA FX Deploy 部分中未解决对符号“WixUI:WixUI_InstallDir”的引用
- android - Firebase storag getDownloadUrl Image 未在 ViewHolder Android 中显示
- javascript - 对象属性在使用 Number() 设置后被视为 null,即使它记录为具有值
- javascript - 对象数组的操作
- r - 用于计算 R 中 5 种不同算法的精度、召回率和准确率的函数
- spring-boot - 在 Kafkalistener 集成测试中捕获异常
- powershell - 如何从 PowerShell 脚本调整 Windows 10 上的 Docker 桌面虚拟机的大小?
- r - R中的频率计数