web-dev-qa-db-fra.com

Des fichiers de plug-in supplémentaires sont-ils supprimés lors d'une mise à niveau?

J'ai appris d'une question précédente que les mises à jour du plugin sont téléchargées sous la forme d'un fichier Zip, et WordPress écrase tous les fichiers du dossier du plugin, que ce fichier ait réellement eu ou non un changement d'une version à l'autre. Ma question est la suivante: si l’utilisateur a ajouté des fichiers supplémentaires au dossier du plug-in (tels que des fichiers .po/.mo pour la traduction de la langue), ces fichiers seront-ils supprimés lors de la mise à jour du plug-in?

1
Ben Miller

Oui, tout l'ancien répertoire sera supprimé. Enregistrez donc les fichiers dans le répertoire de téléchargement et d’autres données dans la base de données pour conserver toutes les modifications.

De la classe Plugin_Upgrader:

//Hooked to upgrade_clear_destination
function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) {
    global $wp_filesystem;

    if ( is_wp_error($removed) )
        return $removed; //Pass errors through.

    $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : '';
    if ( empty($plugin) )
        return new WP_Error('bad_request', $this->strings['bad_request']);

    $plugins_dir = $wp_filesystem->wp_plugins_dir();
    $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) );

    if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished.
        return $removed;

    // If plugin is in its own directory, recursively delete the directory.
    if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder
        $deleted = $wp_filesystem->delete($this_plugin_dir, true);
    else
        $deleted = $wp_filesystem->delete($plugins_dir . $plugin);

    if ( ! $deleted )
        return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']);

    return true;
2
fuxia