Considera quanto segue:
Il plug-in viene utilizzato su una rete wordpress, che utilizza prefissi di tabella diversi per ciascun sito. Il tuo plugin potrebbe essere in esecuzione contemporaneamente su 836 siti diversi, tutti nello stesso database. wp_385677_liveshoutbox
è un nome di tabella perfettamente ragionevole.
Il plug-in è installato da un utente che ha un concetto di sicurezza e ha modificato il prefisso della tabella per bloccare i robot che tentano di iniettare select * from wp_users
nel sistema. Anche se trovano una nuova vulnerabilità, non funzionerà.
Prendere scorciatoie come i nomi delle tabelle hardcoding è un buon modo per mettere in funzione un prodotto, ma non un buon modo per rilasciarlo. in pochissimo tempo il plugin avrà una pila di commenti "non funziona", nel peggiore dei casi si romperà il sito di qualcun altro.
Se ho una query complessa e non voglio affrontare il dolore della scrittura 'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
, puoi usare i sostituti. Per esempio:
$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 è in continua evoluzione. Ciò che "funziona" oggi potrebbe non funzionare domani. Ecco perché ci sono funzioni API. Gli sviluppatori di Wordpress si assicureranno che il comportamento dell'API pubblica sia coerente (o che deprezzeranno la funzione). Se inizi a utilizzare le chiamate di metodo interne perché è "più veloce in quel modo", di solito tornerà a morderti. Esistono pochissime scorciatoie nel software: spostano il lavoro richiesto da ora in poi e come la tua carta di credito "dopo" di solito costa di più.