Je suis en train de faire un développement de plugins WordPress où, d'après ce que je peux dire, je dois soit créer un tout nouveau plugin, soit créer une vue de base de données.
Le client veut quelques journaux simples de téléchargements par utilisateur, puis veut pouvoir exporter ces journaux au format CSV.
La journalisation est assez facile et faite. Mon plan pour exporter les journaux au format CSV consiste simplement à utiliser un plugin d'exportation de table qui devrait exporter les journaux. Le client est satisfait d'une interface basique.
Toutefois, les journaux sont divisés en deux tables, les "catégories" de journaux étant normalisées de manière judicieuse dans une table séparée - mais cela n’a aucun sens pour un utilisateur. Je peux résoudre ce problème très facilement avec une vue de base de données:
CREATE VIEW wp_my_evil_export_view AS
SELECT `e`.`id`, `l`.`log_name` as 'category',`l`.`description`, `e`.`date`, `u`.`user_email` as 'email', `e`.`text`
FROM `wp_wls_entries` as `e`,
`wp_wls_logs` as `l`,
`wp_users` as `u`
WHERE `e`.`log_id` = `l`.`id`
AND `e`.`user_id` = `u`.`id`
Ceci apparaît alors comme une table séparée dans le plugin, le client peut cliquer dessus et il exporte bien au format CSV.
Cependant cela me fait me sentir légèrement sale. C'est un hack complet, totalement non-WordPress dans tous les aspects et personne ne semble même envisager de créer des vues dans les recherches Google.
Néanmoins, sa simplicité, relativement peu probable à briser à moins que le plugin sous-jacent change sa structure de base de données.
Donc, si cela est VRAIMENT mauvais, laissez cette question constituer un avertissement pour les autres qui tombent ici.
Sinon, cela a-t-il un sens dans ce cas ou existe-t-il une autre méthode simple que j'ai manquée pour résoudre ce problème?
Dans les tableaux personnalisés, vous faites ce que vous voulez. Si vous avez besoin d'une vue, utilisez-la.
Cependant, vous pouvez envisager de séparer le code chez un exportateur. Voir wp-admin/includes/export.php
pour un début. Si vous conservez le code SQL et le format d'exportation distincts, vous pouvez:
Le plugin que vous avez mentionné ne fait pas cela. De plus, il n’utilise même pas l’export API interface. Il devrait toujours y avoir un seul endroit pour exporter les données: Outils/Exporter .