Considérer ce qui suit:
Votre plugin est utilisé sur un réseau wordpress, qui utilise différents préfixes de table pour chaque site. Votre plugin pourrait fonctionner simultanément sur 836 sites différents, tous dans la même base de données. wp_385677_liveshoutbox
est un nom de table parfaitement raisonnable.
Votre plugin est installé par un utilisateur qui a un certain concept de sécurité et a changé le préfixe de la table pour bloquer les bots qui tentent de s'injecter select * from wp_users
dans le système. Même s'ils découvrent une nouvelle vulnérabilité, cela ne fonctionnera pas.
Prendre des raccourcis comme les noms de table de codage en dur est un bon moyen de mettre un produit en service, mais pas un bon moyen de le publier. en très peu de temps, le plugin aura une pile de commentaires "ne fonctionne pas", dans le pire des cas, vous casserez le site de quelqu'un d'autre.
Si j'ai une requête complexe et que je ne veux pas faire face à la douleur de l'écriture, 'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
vous pouvez utiliser des remplaçants. Par exemple:
$query = 'select foo from %table% left join %meta% on %table%.ID = %meta%.meta_id ... ';
$change = array (
'%table%' => $wpdb->prefix . '_mytable',
'%meta%' => $wpdb->prefix . '_mytablemeta'
);
$sql = str_replace( array_keys( $change ), array_values( $change ), $query );
$results = $wpdb->get_results( $sql );
Wordpress est en constante évolution. Ce qui "fonctionne" aujourd'hui peut ne pas fonctionner demain. C'est pourquoi il existe des fonctions API. Les développeurs Wordpress s'assureront que le comportement de l'API publique est cohérent (ou ils déprécieront la fonction). Si vous commencez à utiliser des appels de méthode internes parce que c'est «plus rapide de cette façon», cela reviendra généralement vous mordre. Il existe très peu de vrais raccourcis dans les logiciels - ils déplacent simplement le travail requis de maintenant à plus tard, et comme votre carte de crédit "plus tard" coûte généralement plus cher.