使用时从列名中删除表名$wpdb->insert() 对我有效的是:
function add_to_affuser($user_id) {
global $wpdb;
$user_info = get_userdata($user_id );
$wpdb->insert( \'mytbl_A\', array(\'name\' => $user_info->user_login,
\'email\' => $user_info->user_email ), array(\'%s\', \'%s\') );
}
add_action( \'user_register\', \'add_to_affuser\');
function add_to_aff($user_id) {
global $wpdb;
$user_info = get_userdata($user_id);
$wpdb->insert( \'mytbl_B\', array(\'user_id\' => $user_info->ID ), array(\'%d\') );
}
add_action( \'user_register\', \'add_to_aff\');
在尝试复制报告的问题时,我注意到使用
dbDelta() (以及提供的数据库描述)尽管尝试使用
A 和
B. 我也有点不确定前缀是如何根据您的代码设置的。
这里有一个包含数据库创建部分的演示插件。自定义表是在插件激活时创建的。添加新用户时,将更新自定义DB表。
<?php
/*
Plugin Name: WPSE update custom tables when adding user
Plugin URI: http://wordpress.stackexchange.com/questions/241560
Description:
Version: 0.0.1
Author:
Author URI:
License: GPL2/Creative Commons
*/
/**
* Create the database tables upon activation of this plugin
*
*/
register_activation_hook( __FILE__, \'wpse241560_db_install\' );
function wpse241560_db_install() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql_affuser = "CREATE TABLE {$wpdb->prefix}affuser (
affiliate_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
email varchar(512) NULL,
from_date date NULL,
thru_date date NOT NULL,
status varchar(10) DEFAULT \'active\' NOT NULL,
type varchar(10) NULL,
PRIMARY KEY (affiliate_id),
KEY status (status)
) $charset_collate;";
$sql_aff = "CREATE TABLE {$wpdb->prefix}aff (
affiliate_id bigint(20) unsigned NOT NULL,
user_id bigint(20) unsigned NOT NULL,
PRIMARY KEY (affiliate_id, user_id)
) $charset_collate;";
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql_affuser );
dbDelta( $sql_aff );
}
/**
* Update affuser table after adding a new user
*/
add_action( \'user_register\', \'wpse241560_add_to_affuser\');
function wpse241560_add_to_affuser( $user_id ) {
global $wpdb;
$user_info = get_userdata( $user_id );
$wpdb->insert( "{$wpdb->prefix}affuser",
array(
\'name\' => $user_info->user_login,
\'email\' => $user_info->user_email
),
array( \'%s\', \'%s\' ) );
}
/**
* Update aff table after adding a new user
*/
add_action( \'user_register\', \'wpse241560_add_to_aff\' );
function wpse241560_add_to_aff( $user_id ) {
global $wpdb;
$user_info = get_userdata( $user_id );
$wpdb->insert( "{$wpdb->prefix}aff",
array(
\'user_id\' => $user_info->ID
),
array( \'%d\' ) );
}