在wpdb中的哪里添加新表名?

时间:2013-10-03 作者:Norman

我已经在中手动设置了一个新表wp-db 数据库在中的何处添加此表的名称wpdb 班级还是其他地方?

我注意到WordPress使用如下查询:$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" ); 其中未使用实际表名。

如果我要这样做:$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->friends" ); 这行不通。

我也试着加上这样的名字var $friends; 内部wpdb 类,但这不起作用。

3 个回复
SO网友:murdaugh

$wpdb->tables[] = \'friends\'; 是您要查找的基本代码。

请注意,您需要测试列表中是否存在该表,这样您就不会在表数组中得到该表的100个副本,尤其是当您的代码可能在页面加载中重复时。

更新示例:

add_action( \'wp_loaded\', \'add_table\' );

function add_table() {
    global $wpdb;
    if ( ! in_array( \'friends\', $wpdb->tables ) ) {
         $wpdb->tables[] = \'friends\';
    }
}

SO网友:Eugene Manuilov

不要修改wpdb 全班同学!这是个坏习惯。下次WordPress更新其版本时,您将丢失所有更改。

而不是修改wpdb 类中创建一个表名变量(或常量),并在需要时使用它。

例如,在myplugin.php 文件添加以下内容:

global $wpdb;
define( \'MYPLUGIN_TABLE_FRIENDS\', $wpdb->prefix . \'friends\' );
然后在您的查询中这样使用它:

$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM " . MYPLUGIN_TABLE_FRIENDS );

UPDATED:

好啊好的但就我所知,由于我对这一切都是新手,WordPress是如何做到的,它们存储在哪里?

这些表格是在$wpdb->set_prefix() 方法被调用。看看this method 而你专注于673-685 lines.

SO网友:gmazzap

Eugene Manuilov 答案是一个很好的解决方案。但是,如果您想使用$wpdb->table_name 语法您可以

add_action(\'after_setup_theme\', \'add_table_name\');

function add_table_name() {
  global $wpdb;
  $wpdb->friends = $wpdb->prefix . \'friends\';
}

结束