从unctions.php获取MU上的正确博客ID时出错

时间:2010-11-19 作者:Scott B

我的函数中有脚本。php,用于查找安装主题的站点的媒体目录。这很简单,除非站点是MU站点。在这种情况下,媒体目录基于blog\\u id。

但是,我下面的代码返回的是主站点id,而不是运行它的站点的blog\\u id。。。

function get_image_list()
{
    global $current_site;
    $dir=is_multisite() ?  \'wp-content/blogs.dir/\'.$current_site->blog_id.\'/files/\' : \'wp-content/uploads/\';
    $url=is_multisite() ?  get_bloginfo(\'url\').\'/wp-content/blogs.dir/\'.$current_site->blog_id.\'/files/\' : get_bloginfo(\'url\').\'/wp-content/uploads/\';
在本例中,实际的blog\\u id为3,但是,对于$current\\u site->blog\\u id,其返回值为1

错误是。。。

cannot open wp-content/blogs.dir/1/files/

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

比较$current_site->id 具有$current_site->blog_id. 根据在线文件,blog_id 应该正在工作。。。但请检查是否存在重大差异(您的系统可能有插件或其他导致问题的东西)。

更新-忽略上一次$current_site 是由您的站点或网络定义的全局变量,将始终返回相同的值blog_id 作为您的网络仪表板—在本例中为“网络仪表板”;1.“;

您需要使用的是$current_blog:

function get_image_list() {
    global $current_blog;
    $dir=is_multisite() ?  \'wp-content/blogs.dir/\'.$current_blog->blog_id.\'/files/\' : \'wp-content/uploads/\';
    $url=is_multisite() ?  get_bloginfo(\'url\').\'/wp-content/blogs.dir/\'.$current_blog->blog_id.\'/files/\' : get_bloginfo(\'url\').\'/wp-content/uploads/\';
这会给你提供正确的信息。

SO网友:fuxia

另一个问题是你的硬编码/wp-content/.使用WP_CONTENT_DIR 用于文件访问和WP_CONTENT_URL 对于HTTP请求或更好的请求wp_upload_dir() 两者皆有。我有一些安装正在运行,其中wp内容位于另一个域和WordPress目录之外的路径中。

所以,即使你得到了正确的blogi_id, 您可能找不到文件。:)

Update

我的小调试插件Show Upload Info 可能会给出一些提示。但是is_dir() 不幸的是,它们不可靠。

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo