Considera lo siguiente:
Su complemento se usa en una red de wordpress, que usa diferentes prefijos de tabla para cada sitio. Su complemento podría ejecutarse simultáneamente en 836 sitios diferentes, todos en la misma base de datos. wp_385677_liveshoutbox
es un nombre de tabla perfectamente razonable.
Su complemento es instalado por un usuario que tiene algún concepto de seguridad y ha cambiado el prefijo de la tabla para bloquear los bots que intentan inyectar select * from wp_users
en el sistema. Incluso si encuentran una nueva vulnerabilidad, no funcionará.
Tomar accesos directos como nombres de tablas de codificación es una buena manera de hacer que un producto esté en funcionamiento, pero no es una buena manera de lanzarlo. en muy poco tiempo, el complemento tendrá un montón de comentarios "no funciona", en el peor de los casos, romperá el sitio de otra persona.
Si tengo una consulta compleja y no quiero lidiar con el dolor de escribir 'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
, puedes usar reemplazos. Por ejemplo:
$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á cambiando constantemente. Lo que "funciona" hoy puede no funcionar mañana. Es por eso que hay funciones de API. Los desarrolladores de Wordpress se asegurarán de que el comportamiento de la API pública sea consistente (o depreciarán la función). Si empiezas a usar las llamadas a métodos internos porque es "más rápido de esa manera", generalmente volverá a morderte. Hay muy pocos accesos directos verdaderos en el software: solo mueven el trabajo requerido de ahora en adelante, y al igual que su tarjeta de crédito, "más tarde" generalmente cuesta más.