Rozważ następujące:
Twoja wtyczka jest używana w sieci wordpress, która używa różnych prefiksów tabel dla każdej strony. Twoja wtyczka może działać jednocześnie na 836 różnych witrynach, wszystkie w tej samej bazie danych. wp_385677_liveshoutbox
to całkowicie rozsądna nazwa tabeli.
Twoja wtyczka jest instalowana przez użytkownika, który ma pewne pojęcie bezpieczeństwa i zmienił prefiks tabeli, aby blokować boty próbujące wstrzyknąć select * from wp_users
do systemu. Nawet jeśli znajdą nową lukę, nie zadziała.
Stosowanie skrótów, takich jak nazwy tabel kodowania na stałe, jest dobrym sposobem na uruchomienie produktu, ale nie jest dobrym sposobem na jego wydanie. w bardzo krótkim czasie wtyczka będzie zawierała stos komentarzy „nie działa”, w najgorszym przypadku złamiesz czyjąś stronę.
Jeśli mam złożone zapytanie i nie chcę poradzić sobie z bólem pisania 'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
, możesz użyć zamienników. Na przykład:
$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 ciągle się zmienia. To, co „dziś działa”, jutro może nie działać. Dlatego istnieją funkcje API. Programiści Wordpress upewnią się, że zachowanie publicznego interfejsu API jest spójne (lub osłabią funkcję). Jeśli zaczniesz używać wewnętrznych wywołań metod, ponieważ jest to „szybsze w ten sposób”, zwykle wróci, by cię ugryźć. Istnieje bardzo niewiele prawdziwych skrótów w oprogramowaniu - przenoszą one odtąd wymagane prace od teraz do później i podobnie jak karta kredytowa „później” zwykle kosztuje więcej.