Ich habe WordPress und das Plugin installiert contact form 7
drin.
Dazu habe ich ein mehrseitiges Kontaktformular eingebaut Contact Form 7 Multi-Step Forms
auch. Bis jetzt funktioniert alles einwandfrei. Sogar die Post wird verschickt.
Das Problem, das ich habe, ist, dass ich PHP-Code ausführen möchte, bevor die E-Mails gesendet werden.
Ich habe diesen Code eingefügt, um die Fähigkeit des Plugins zu testen, ihn auszuführen.
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);
Die Funktion funktioniert sogar gut, wenn ich sie außerhalb des Plugins in einer extra php-Datei ausführe.
Jetzt kann ich nicht herausfinden, warum die Funktion nicht funktioniert, wenn sie in das Plugin eingefügt wird?
Datenbank in WordPress mit ihrer globalen Datenbank abfragen wpdb
Objekt so
function testfunc( $cf7 )
{
global $wpdb;
$wpdb->query("CREATE TABLE `aaaaaaaaaaa` ( test VARCHAR(30))");
}
add_action( 'wpcf7_before_send_mail', 'testfunc', 1);
WordPress erstellt eine Tabelle auf diese Weise nicht in der PHP-Struktur für die Verbindung:
Weitere Informationen hören für erstellen, erhalten Tabellendaten für 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 );
}
+1 für Rave Patel
Ich schlage nur vor, dass Sie jedes Mal überprüfen, ob die Tabelle existiert, bevor Sie versuchen, sie zu erstellen.
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 );
}
}
Haben Sie überprüft, ob die Tabelle
aaaaaaaaaaa
ist bereits vorhanden?– Dreher
6. Mai 2014 um 7:53 Uhr
Ja, das möchte ich erreichen und deshalb weiß ich, dass es nicht funktioniert, weil die Tabelle nach dem Ausführen des Skripts nicht existiert
– Friedrich
6. Mai 2014 um 7:55 Uhr
versuchen Sie es hinzuzufügen
or die(mysql_error());
nachmysql_query
.– Dreher
6. Mai 2014 um 7:56 Uhr
Das Problem ist, dass ich nicht einmal solche Antworten vom Server bekomme. Ich bekomme nichts zurück, weil ich das Ganze in WordPress laufe, während ich ein Formular absende.
– Friedrich
6. Mai 2014 um 7:58 Uhr
Ist der Parameter $cf7 obligatorisch? Das könnte das Problem sein.
– Kanischk Dudeja
14. Mai 2014 um 13:15 Uhr