我已在其中安装了WordPress和插件contact form 7
。
要使其成为多页联系表单,我也安装了Contact Form 7 Multi-Step Forms
。
一切正常,直到现在。甚至邮件都会被发送。
我遇到的问题是,我希望在发送电子邮件之前运行一些PHP代码。
我已插入此代码以尝试插件运行它的能力。
function testfunc( $cf7 )
{
mysql_connect("localhost", "user_name", "password") or die(mysql_error());
mysql_select_db("db_name") or die(mysql_error());
mysql_query("CREATE TABLE `aaaaaaaaaaa` ( test VARCHAR(30))");
}
add_action( 'wpcf7_before_send_mail', 'testfunc', 1);
当我在一个额外的php文件中运行插件外,该函数甚至可以正常工作。
现在我无法弄清楚插入插件后该功能无效的原因?
答案 0 :(得分:3)
在wordpress中使用它的全局wpdb
对象查询数据库
function testfunc( $cf7 )
{
global $wpdb;
$wpdb->query("CREATE TABLE `aaaaaaaaaaa` ( test VARCHAR(30))");
}
add_action( 'wpcf7_before_send_mail', 'testfunc', 1);
答案 1 :(得分:2)
wordpress创建表格不是用于连接的php结构:
More info hear for create, get table data for wp
function testfunc( $cf7 )
{
global $wpdb;
$table_name = $wpdb->prefix . 'tablename';
$sql = "CREATE TABLE IF NOT EXISTS ".$table_name."(
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
UNIQUE KEY id (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
答案 2 :(得分:0)
+1 Rave Patel
我建议您在每次尝试创建表之前检查表是否存在。
function testfunc( $cf7 )
{
global $wpdb;
$table_name = $wpdb->prefix . 'tablename';
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
UNIQUE KEY id (id)
)";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
}