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
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' );