$wp_FilesSystem->abspath()返回的究竟是什么?

时间:2016-05-13 作者:phpheini

使用$wp_filesystem 正在定义正确的路径。在文件系统的文档中,路径(例如插件目录)通常是这样设置的:$plugin_path = str_replace(ABSPATH, $wp_filesystem->abspath(), MY_PLUGIN_DIR);

我试图理解这一点,但我失败了,因为我找不到什么$wp_filesystem->abspath() 实际上应该会回来。当我var_dump() 我明白了false. 有人能给我解释一下为什么我们不能简单地使用ABSPATH 函数中的变量,如$wp_filesystem->put_contents()?

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

如果您检查abspath():

public function abspath() {
    $folder = $this->find_folder(ABSPATH);
    // Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare.
    if ( ! $folder && $this->is_dir( \'/\' . WPINC ) )
        $folder = \'/\';
    return $folder;
}
。。您将看到它的主要用途是获取文件系统方法的“计算”路径。例如,使用FTP时,FTP帐户的根路径可能比实际文档根更深/更远。其他方法也可能不适用于ABSPATH, 因此find_folder() 调用(实际上是search_for_folder() 这才是真正的工作)。

因此,您会看到如下内容:

$plugin_path = str_replace(ABSPATH, $wp_filesystem->abspath(), MY_PLUGIN_DIR);
。。。自从MY_PLUGIN_DIR 将根据ABSPATH, 但在文件系统API的上下文中,该路径可能无效-因此我们替换ABSPATH 使用计算的abspath() 在写作之前。