web-dev-qa-db-fra.com

Copier un fichier d'un plugin dans mon répertoire de thème

J'ai codé un plugin wordpress en utilisant 'copy ()' de PHP pour copier un fichier de mon répertoire de plugin dans mon répertoire de thème, mais cela ne fonctionne pas:

<?
function file_replace() {

    $plugin_dir = plugin_dir_path( __FILE__ ) . '/library/front-page.php';
    $theme_dir = get_stylesheet_directory() . 'front-page.php';
    copy($plugin_dir, $theme_dir);

    if (!copy($plugin_dir, $theme_dir)) {
    echo "failed to copy $plugin_dir to $theme_dir...\n";
    }
}

add_action( 'wp_head', 'file_replace' );

Je pensais que je devrais peut-être utiliser ! $wp_filesystem->put_contents() mais je ne sais pas exactement comment faire cela ou si ce serait même la bonne voie à suivre. Des idées sur la meilleure façon de copier un fichier d'un plugin dans un répertoire de thème?

Merci

3
Rizzo

Pour répondre à votre question, vous avez mal spécifié les chemins: plugin_dir_path( __FILE__ ) a déjà une barre oblique à la fin (avoir deux barres obliques ne devrait pas poser de problème, mais il est plus sûr d’en avoir un) et get_stylesheet_directory() n’a pas de barre oblique finale, vous devez donc en ajouter un avant d'ajouter le nom de fichier. Votre code final devrait être comme ceci:

<?php
function file_replace() {

    $plugin_dir = plugin_dir_path( __FILE__ ) . 'library/front-page.php';
    $theme_dir = get_stylesheet_directory() . '/front-page.php';

    if (!copy($plugin_dir, $theme_dir)) {
        echo "failed to copy $plugin_dir to $theme_dir...\n";
    }
}

add_action( 'wp_head', 'file_replace' );
3