如何使用IF条件更改wp_config.php中的$TABLE_PREFIX

时间:2012-07-22 作者:Pam Apple

我正在测试一个非常大的数据库(也许wp_posts 包含数十万行)。因此,查询时间,尤其是搜索查询,非常长。我在想,是否有其他方法可以将WP数据库拆分为具有不同表前缀的多个表,以便url结构与原始数据库相比不会发生变化。

我试着换衣服$table_prefix 在里面wp_configwpa_, 然后我创建了一个帖子示例,帖子名以a. 然后我改变了$table_prefix 在里面wp_configwpb_, 然后我创建了一个帖子示例,帖子名以b.

在下一步中,我将替换$table_prefix 符合

// if query for post start with a, it will go to wpa_ tables,
// if query for post start with b, it will go to wpb_ tables
$prefix = get_the_title(); 

if ($prefix(0) !== \'a\') {

    $table_prefix  = \'wpb_\';

} else {

    $table_prefix  = \'wpa_\';

}
当我尝试打开我的域时,我遇到了错误Fatal error: Call to undefined function get_the_title() in /home/todaytra/public_html/1/wp-config.php on line 62

我真的需要执行这个任务,通常的WPMU安装会生成子域或子文件夹,它会更改所有帖子的永久链接结构。我试着搜索了很多,但找不到关于这个的任何信息。

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

帕姆,

听起来您面临着一些重大挑战,但我强烈建议您不要弄乱表前缀。这样做会导致一系列问题,这将需要一次又一次的黑客来补救,从而使您的WordPress安装变得一团糟。

您还可以做一些其他事情来帮助解决查询速度慢的问题。虽然这些事情不一定都是直截了当的,但它们比尝试破解表前缀更值得您花费时间。

1) 确保您使用WP 3.4+。3.4中的标准查询有一些很好的改进,可以提高查询速度。

2) 对于特别有问题的查询,请考虑设置no_found_rowstrue, update_post_term_cachefalse, 和update_post_meta_cachefalse. 这些都可以提高查询性能,但您肯定需要投入一些时间来理解其影响。阅读法典:http://codex.wordpress.org/Class_Reference/WP_Query

3) 使用持久对象缓存来提供查询缓存。这肯定是一个更复杂的过程,但通过将昂贵的查询缓存到RAM或磁盘,可以避免重复的慢速查询。

4) 安装页面缓存(WP Super Cache 这将有助于减少调用昂贵查询的次数。这并不能直接解决查询问题;但是,它减少了查询的调用次数。

除了第一个建议之外,我认为这些都不是“容易的”;然而,在我看来,你建议做的是一种巨大的浪费,你最好把时间花在研究解决WordPress中缓慢查询的替代方案上。您将了解更多关于WordPress、可伸缩性问题以及以标准WordPress方式做事的更好方法。

结束