Скопируйте файл из плагина в каталог моей темы


Я закодировал плагин wordpress с помощью php 'copy()', чтобы скопировать файл из каталога моего плагина в каталог моей темы, но он не работает:

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

Я подумал, что, возможно, мне следует использовать ! $wp_filesystem->put_contents(), но я не совсем уверен, как это сделать или будет ли это вообще правильным решением. Есть идеи о том, как лучше всего скопировать файл из плагина в каталог темы?

Спасибо

Author: Rizzo, 2014-05-22

1 answers

Чтобы ответить на ваш вопрос, вы неправильно указали пути: plugin_dir_path( __FILE__ ) уже имеет завершающую косую черту в конце (наличие двух завершающих косых черт не должно быть проблемой, но безопаснее иметь одну) и get_stylesheet_directory() поставляется без завершающей косой черты в конце, поэтому вам нужно добавить ее перед добавлением имени файла. Ваш окончательный код должен быть таким:

<?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' );
 4
Author: Alexandru Furculita, 2014-05-22 22:05:58