考虑以下因素:
您的插件用于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行为是一致的(否则他们会贬低函数)。如果你开始使用内部方法调用,因为这样做“更快”,它通常会回来咬你。软件中几乎没有真正的捷径——它们只是将所需的工作从现在转移到以后,就像你的信用卡“以后”通常要花更多的钱。