web-dev-qa-db-fra.com

$ wpdb-> insert ne fonctionne pas

Je viens de créer un thème et de faire un formulaire que l'action est options.php, mais il donne une erreur de page d'options n'est pas trouvée. J'ai donc décidé de créer ma propre table dans wp-database avec ce code en utilisant la création d'un plugin:

register_activation_hook(__FILE__, 'create_javart_theme_settings_table');

function create_javart_theme_settings_table() {

global $wpdb;

$version = get_option('my_plugin_version', '1.0');
$charset_collate = $wpdb->get_charset_collate();
$table_name = $wpdb->prefix . 'javart_theme_settings_table';

$sql = "CREATE TABLE $table_name (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    name varchar(200) DEFAULT '' NOT NULL,
    value longtext NOT NULL,
    type varchar(200) NOT NULL,
    PRIMARY KEY  (id)
) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);

update_option('my_plugin_version', $version);
}

et ce code fonctionne très bien pour me faire une table, mais lorsque j'insère des données à partir du formulaire, la page est actualisée mais rien ne se passe sur Wordpress db.

Le formulaire est:

    <form method="post" action="">
        <p>About Us Diagram &nbsp;&nbsp;&nbsp;&nbsp;<input id="title" type="text" name="title" placeholder="Title" /><input type="text" name="content" placeholder="Content" /></p>
            <?php submit_button('Save Settings'); ?>
    </form>

et le code php pour récupérer ce contenu est

<?php
$titleData = $_POST['title'];
$contentData = $POST['content'];
?>

et entrez à nouveau dans le plugin, dans le plugin pour insérer les valeurs du code:

function about_us_form_to_database_exporter() {

global $titleData;
global $contentData;
global $wpdb;

$wpdb->show_errors();
$wpdb->last_query;


$type = 'About Us';
$table_name = $wpdb->prefix . 'javart_theme_settings_table';
$wpdb->insert(
$table_name, array(
'name' => 'Title',
'value' => $titleData,
'type' => 'About Us',
)
);

$wpdb->print_error();
var_dump($wpdb);
}
register_activation_hook(__FILE__, 'about_us_form_to_database_exporter');

alors, quelle est l'erreur que l'entrée ne va pas à la table de la base de données wordpress

1
Animesh Sahu

Il semble que ce serait plus simple de revenir en arrière et de corriger votre tentative initiale: enregistrer une option dans une table WP-native plutôt que de créer la vôtre. Essayez update_option - il crée une option s’il n’existe pas, ou se met à jour s’il existe. Cela vous évitera beaucoup de code et de maux de tête à l'avenir.

3
WebElaine