我正在尝试创建一个系统,向用户帐户添加信用,然后在用户提交帖子时从信用中减去。
我有触发添加学分和删除学分所需的函数,我只需要实际代码的帮助就可以完成这部分。
这就是我想做的:
添加信用设置一个名为“的变量”add_credit_amount
“添加信用额度。
获取当前用户的ID
获取当前信息users meta field value
存储在“my_user_credit
“字段
添加“add_credit_amount
“变量到”my_user_credit
“金额
用新金额更新用户“my\\u user\\u credit”字段。
删除贷方创建一个名为“的变量”remove_credit_amount
“并设置要删除的信用额度。
获取当前用户的ID
获取当前信息users meta field value
存储在“my_user_credit
“字段
检查“”中的值my_user_credit
“字段大于或等于”remove_credit_amount
".
如果是,则减去“remove_credit_amount
“变量来自”my_user_credit
“字段金额并更新用户”my_user_credit
“具有新金额的字段。
如果不是,那么echo
此消息:“您没有足够的信用来发布。”
提前感谢所有能提供帮助的人。
使现代化
@约书亚·阿贝纳泽
我正在努力让它发挥作用。如果他们没有足够的学分,我不想出示表格。你能理解为什么它不能正常工作吗?它似乎不会返回meta字段的值。
谢谢
<?php
global $user_ID;
$user_ID = wp_get_current_user();
$creditcount = get_user_meta( $user_ID, \'my_user_credit\', true );
if($creditcount <= 4){
echo \'please get more credits\';
} else {
echo do_shortcode(\'[gravityform id=2 title=false description=false]\');
}
?>
谢谢
SO网友:Joshua Abenazer
下面的功能应该可以完成您的工作。
function manage_credits( $operation = \'add\', $amount = 0 ) {
$user_id = get_current_user_id();
if ( $user_id ) {
$user_credit = (int) get_user_meta( $user_id, \'my_user_credit\', true );
if ( \'add\' == $operation ) {
$user_credit += $amount; //For adding credits
} elseif ( \'remove\' == $operation && ( $user_credit >= $amount ) ) {
$user_credit -= $amount; //For removing credits
} elseif ( \'remove\' == $operation ) {
echo \'You do not have enough credits to post.\';
return;
}
update_user_meta( $user_id, \'my_user_credit\', $user_credit );
}
}
现在,您只需在触发add时调用
manage_credits( \'add\', 10 )
触发remove时,您将调用
manage_credits( \'remove\', 10 )
. 第二个参数应与要添加或删除的信用额一起传递。