Розглянемо наступне:
Ваш плагін використовується в мережі Wordpress, яка використовує різні префікси таблиці для кожного сайту. Ваш плагін може працювати одночасно на 836 різних сайтах, всі в одній базі даних. wp_385677_liveshoutbox
- цілком розумна назва таблиці.
Ваш плагін встановлюється користувачем, який має певну концепцію безпеки, і змінив префікс таблиці, щоб блокувати ботів, які намагаються ввести select * from wp_users
в систему. Навіть якщо вони знайдуть нову вразливість, вона не спрацює.
Вибір ярликів, таких як назви таблиць жорсткого кодування, - це хороший спосіб розпочати роботу продукту, але не є хорошим способом його випуску. за дуже короткий час у плагіні з'явиться купа коментарів до цього "не працює", в гіршому випадку ви зламаєте чужий сайт.
Якщо у мене складний запит, і я не хочу мати справу з болем у написанні, 'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
ви можете використовувати заміни. Наприклад:
$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 постійно змінюється. Те, що "працює" сьогодні, може не працювати завтра. Тому існують функції API. Розробники Wordpress переконаються, що поведінка публічного API є послідовною (або вони знецінять функцію). Якщо ви почнете використовувати внутрішні виклики методів, тому що це "швидше таким чином", як правило, вони повернуться, щоб вкусити вас. Справжніх ярликів у програмному забезпеченні дуже мало - вони просто переміщують необхідну роботу з цього моменту на пізніше, і подібно до того, що ваша кредитна картка "пізніше" зазвичай коштує дорожче.