web-dev-qa-db-fra.com

Comment utiliser une base de données différente pour lister et gérer les commentaires dans le backend

Je dois faire en sorte que Wordpress utilise une autre base de données (pas celle spécifiée dans le site wp-config) sur le backend admin "Comments". Je dois ensuite pouvoir éditer, approuver, supprimer, etc. comme d’habitude. Le serveur de base de données auquel je vais me connecter a été configuré pour accepter les connexions externes.

J'ai quelques idées pour aborder ceci:

  1. from wp-config.php: dispose d'un bloc if pour modifier les chaînes de connexion à la base de données si l'utilisateur visualise la page de commentaires.

Bien que cela ne me semble pas bon, je suppose que cela peut créer beaucoup de connexions de base de données inutiles si l'utilisateur retourne à la page de commentaires.

  1. modifier les fichiers wp-admin: créez une instance de wpdb et dites à Wordpress de l’utiliser pour l’administration des commentaires.

Cependant, je ne trouve pas les fichiers .php contenant les commentaires de la base de données (je peux donc modifier la base de données là où ils le font). J'ai regardé edit-comments.php-> class-wp-comments-list-table.php-> class-wp-list-table.php (jusqu'à la classe de base), mais je ne vois pas le bit qui parle à la base de données.

  1. Tous les crochets disponibles pour puiser et modifier la base de données? (j'en doute)

Merci d'avance.

1
Sergey

Vous pouvez filtrer query. Voir wpdb::query() dans wp-includes/wp-db.php.

Vous obtenez la chaîne SQL complète en paramètre. Ensuite, recherchez les requêtes dans la table des commentaires:

add_filter( 'query', function( $query ) 
{
    global $wpdb;

    if ( FALSE === stripos( $query, "FROM $wpdb->comments" )
        return $query;

    // Now change the SQL
});

Mais vous devez attraper tous les JOIN avec d'autres tables aussi. Pas sûr que cela soit possible d'une manière élégante.

2
fuxia

Le problème avec l’essai de subvertir l’accès complet à la base de données est que même sur une page, traitant de commentaires, WP aura toujours besoin de requêtes pour d’autres données. Le défi n’est pas de changer autant où la requête est faite, mais de la changer sans que tout s'effondre.

Votre meilleure chance est probablement d’essayer une solution pour le sharding au niveau WP (tel que HyperDB ou le niveau SQL).

PS il serait utile de suggérer des alternatives possibles si vous incluez le contexte pourquoi avez-vous besoin (ou pensez-vous besoin) d'un tableau séparé pour les commentaires? Il y a des gens autour de vous qui ont de l'expérience avec de grandes installations et qui ont probablement une réponse plus précise que la théorie générique.

2
Rarst