O que exatamente $ wp_filesystem-abspath () retorna?

4

O problema real que tenho ao usar o $wp_filesystem é definir os caminhos corretos. Na documentação do sistema de arquivos, o caminho (por exemplo, para o diretório de plugins) é geralmente configurado assim: $plugin_path = str_replace(ABSPATH, $wp_filesystem->abspath(), MY_PLUGIN_DIR);

Eu tentei entender isso, mas falhei porque não consegui descobrir o que o $wp_filesystem->abspath() deveria retornar. Quando eu var_dump() eu recebo false . Alguém poderia me explicar por que não podemos simplesmente usar a variável ABSPATH em funções como $wp_filesystem->put_contents() ?

    
por phpheini 13.05.2016 / 13:04

1 resposta

1

Se você verificar a origem de 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;
}

.. você verá que seu principal objetivo é obter o caminho "calculado" para o método do sistema de arquivos. Por exemplo, com o FTP, o caminho da raiz da conta FTP pode ser mais profundo / mais baixo na raiz do documento atual . Outros métodos também podem não funcionar com apenas ABSPATH , daí a find_folder() call (que na verdade é um wrapper para search_for_folder() que faz o trabalho real).

Por isso você viu algo como:

$plugin_path = str_replace(ABSPATH, $wp_filesystem->abspath(), MY_PLUGIN_DIR);

... pois MY_PLUGIN_DIR terá sido construído (em algum momento) com base em ABSPATH , mas dentro do contexto da API do sistema de arquivos esse caminho pode ser inválido - portanto, substituímos ABSPATH pelo% co_de calculado % antes de escrever.

    
por TheDeadMedic 14.05.2016 / 20:14