我试图弄清楚如何通过PHP将用户信息和特定元数据添加到单独的表中。当用户发布到wp_users
和wp_usermeta
桌子我正在使用WooCommerce拍卖插件和突出主题。
另外,如果我创建了一个PHP文件,该文件运行一个查询来提取数据,然后插入,那么我可以在哪里调用该函数来确保表是最新的?
这是我创建的函数。
add_action(\'user_register\', \'save_to_donors\',10,1);
function save_to_donors( $user_id ) {
$single = true;
$user_email = get_userdata($user_id);
$fn= get_user_meta($user_id, \'first_ name\', $single );
$ln= get_user_meta($user_id, \'last_name\', $single );
$em= $user_email->user_email;
$ph= get_user_meta($user_id, \'billing_phone\', $single );
$ad= get_user_meta($user_id, \'billing_address_1\', $single );
$ci= get_user_meta($user_id, \'billing_city\', $single );
$st= get_user_meta($user_id, \'billing_state\', $single );
$zi= get_user_meta($user_id, \'billing_postcode\',$single );
$do= get_user_meta($user_id, \'_money_spent\', $single );
$sql = "INSERT INTO donors (user_id,first_name,last_name,email," .
"phone,address,city,state,zip,amount_donated)".
"VALUES(\'$user_id\',\'$fn\',\'$ln\',\'$em\',\'$ph\',\'$ad\',\'$ci\',\'$st\',\'$zi\',\'$do\')";
$result = mysqli_query($wpdb, $sql) or die(\'Write Error!\');
}
最合适的回答,由SO网友:stoi2m1 整理而成
在我看来,你应该寻求woocommerce购买完成挂钩。此时,您可以添加捐赠以及捐赠金额,然后您可以获取任何用户信息、捐赠金额和其他您需要的信息,并将其保存到您的捐赠表中。
使用此选项:
add_action(\'woocommerce_order_status_completed\', \'save_to_donors\',10,1);
而不是这样:
add_action(\'user_register\', \'save_to_donors\',10,1);
同时更改
$user_id
到
$order_id
作为传递到函数中的参数。
从现在起,您需要对函数进行一些更改$order_id
将传递到函数中,而不是$user_id
. 您可以使用以下一些代码来获取$order
对象和$user_id
我还发现了一些其他代码,可以从order和users元中获取信息,但不确定它们是否会有所不同。
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
$billing_address = $order->get_billing_address();
$billing_address_html = $order->get_formatted_billing_address(); // for printing or displaying on web page
$shipping_address = $order->get_shipping_address();
$shipping_address_html = $order->get_formatted_shipping_address(); // for printing or displaying on web page
有关使用此挂钩的信息
woocommerce_order_status_completed有关如何
get user id from order id
SO网友:Owais Alam
此操作挂钩允许您在新用户添加到数据库后立即访问其数据。用户id作为参数传递给hook。
触发此操作时,并非所有用户元数据都存储在数据库中。例如,昵称在数据库中,但名为first\\u name和last\\u name。触发此操作时,密码已加密。
通常,此挂钩用于保存自定义注册表传递的其他用户元。
此示例将保存自定义注册字段传递的first\\u name字段。
此外,请记住,注册字段的验证不应在此挂钩内执行!改为使用registration\\u errors钩子进行验证(如果registration\\u errors验证失败,则不会调用user\\u register钩子)。
add_action( \'user_register\', \'myplugin_registration_save\', 10, 1 );
function myplugin_registration_save( $user_id ) {
if ( isset( $_POST[\'first_name\'] ) )
update_user_meta($user_id, \'first_name\', $_POST[\'first_name\']);
}