将自定义WP表名存储在全局变量中

时间:2014-06-10 作者:Jacob Raccuia

我很有创意,把它放在插件加载的一个文件中。以这种方式存储表名是否有影响?

global $wpdb;

if(!defined(\'DB_ARTISTS\'))
    define(\'DB_ARTISTS\', $wpdb->prefix . "artists");

if(!defined(\'DB_RELEASES\'))
    define(\'DB_RELEASES\', $wpdb->prefix . "releases");
编辑:我原本没有包括所有我想要的信息。表格和变量的前缀为ABC(ABC_DB_ARTISTS &;$wpdb->prefix . \'abc_artists\' ).

1 个回复
最合适的回答,由SO网友:engelen 整理而成

这个DB_ WordPress中的常量前缀通常被认为是为DB_NAME, DB_HOST, DB_USERDB_PASS. 在我看来,将其用于插件特定常量不是一个好主意。它可能带来的唯一含义是,如果其他插件尝试使用这些常量,但这纯粹是理论上的。

正确的方法是将表名存储在全局$wpdb.

global $wpdb;

if ( ! isset( $wpdb->myplugin_artists ) && ! isset( $wpdb->myplugin_releases ) ) {
    $wpdb->myplugin_artists = $wpdb->prefix . \'myplugin_artists\';
    $wpdb->myplugin_releases = $wpdb->prefix . \'myplugin_releases\';
}
使用正确的前缀很重要(在这种情况下myplugin_ 对于您的插件)。例如,对于高级自定义字段,这通常是acf_ (more on prefixing).

结束

相关推荐

检测$wpdb->GET_RESULTS()生成的错误

使用$wpdb->get\\u results()时如何检测错误?例如:$result = $wpdb->get_results(\"SELECT * FROM this is not a valid query\"); 前面的代码不会生成任何异常或错误;它只是将$result设置为空数组。我们如何可靠地检测由get\\u results()生成的错误?