Учтите следующее:
Ваш плагин используется в сети 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 было согласованным (или они не будут использовать эту функцию). Если вы начнете использовать внутренние вызовы методов, потому что это «быстрее», то, как правило, вы снова будете кусать вас. В программном обеспечении очень мало настоящих ярлыков - они просто переносят требуемую работу с настоящего момента на потом, и, как и ваша кредитная карта, «позже» обычно стоит дороже.