Requêter des tables non WordPress

Imaginez que vous devez faire quelquechose de custom, et que vous devez enregistrer des données dans une table non standard de WordPress, est-il possible d’utiliser les fonction de WordPress pour faire des opération CRUD? sans passer par PDO par exemple?

La réponse est OUI ! Je passe sur le fait de devoir faire une connexion vous même en récupérant les données de connexion à votre base de données.

Contenu

Récupérer les identifiant de connexion dans une page

Il est facile de récupérer les identifiants de connexion quand vous formattez correctement votre page.

/**
 * The template for displaying all pages.
 *
 * Template Name: Page Classement
 * Visibility par
 * Template Post Type:  page_application
 *
 * Page template with minimal formatting, a fixed 940px container and right sidebar layout
 *
 * @package WordPress
 * @subpackage WP-Bootstrap
 * @since WP-Bootstrap 1.0
 */

//var_dump(DB_NAME, DB_USER, DB_PASSWORD, DB_HOST);

global $wpdb;
global $wp_query;

$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}classement ", OBJECT );
var_dump($results);

Le code ci-dessus est dans une page dans un thème (sous réserve que le thème soit actif, ce code marchera)

Vous n’avez pas besoin de faire de connexion, en utilisant l’objet global $wpdb, la connexion est déjà faite, $wpdb est l’objet connexion.

Utilisation de $wpdb

Le documentation officielle de cet objet est sur cette page.

Read

$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}classement ", OBJECT );

Insert

$wpdb->insert( 
    "{$wpdb->prefix}classement", 
    array( 
        'nom' => 'value1', 
        'temps' => 123, 
        'jeu' => 'Templiers', 
        'status' => 'enabled', 
        'created_at' => '2020-08-27 15:10:18', 
    )/*, 
    array( 
        '%s', 
        '%d', 
    ) */
);

Update

$wpdb->update( 
    'classement', 
    array( 
        'nom' => 'value1',   // string
        'position' => 'value2'    // integer (number) 
    )
)

Delete

$wpdb->delete( 'table', array( 'ID' => 1 ) );
Retour en haut