Przepraszam, jeśli to pytanie jest trywialne. Właśnie zaczynam opracowywać wtyczki w WordPress.
We wszystkich samouczkach znalazłem to: podczas tworzenia niestandardowych tabel $wpdb->prefix
używa się.
Przykład:
$table_name = $wpdb->prefix . "liveshoutbox";
Moje pytanie:
Czy użycie jest obowiązkowe
$wpdb->prefix
? Co się stanie, jeśli nie użyję przedrostka dla własnych tabel?
źródło
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: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.
źródło
$wpdb->prefix . "users"
spowoduje niepoprawną tabelę w instalacji na wielu stronach. Jest tak, ponieważ umieści on przedrostek db w tabeli. Jednak na wielu stronach używana jest tylko jedna tabela użytkowników, ponieważ wszyscy użytkownicy są użytkownikami sieci. Więc jeśli zapytanie dotyczy tabel wp_users lub wp_usermeta, musisz użyć odpowiednio$wpdb->users
lub$wpdb->usermeta
.