web-dev-qa-db-ja.com

プラグインから自分のテーマディレクトリにファイルをコピーする

私のプラグインディレクトリからテーマディレクトリにファイルをコピーするために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()を使うべきだと思いました、しかし私はそれをする方法が正確にはわからないか、あるいはそれが正しい方法でさえあるならば。プラグインからテーマディレクトリにファイルをコピーするための最良の方法に関するアイデアはありますか?

ありがとう

3
Rizzo

plugin_dir_path( __FILE__ )の末尾にすでに末尾のスラッシュがあり(末尾に2つのスラッシュがあっても問題ありませんが、安全な方が1つあります)、最後に末尾のスラッシュは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' );
3