0

私の目標は、投稿が保存されるたびにファイルを書き出す Wordpress プラグインを作成することです。以下は、プラグインのヘッダー情報を除いた、プラグインの既存のコードです。

<?php       
add_action( 'save_post', 'write_hook' );

function write_hook( $post_id ) {
    $myFile = "target.txt";
    $fh = fopen($myFile, 'a');
    fwrite($fh, "ANOTHER LINE\n");
    fclose($fh);
    wp_mail( 'myemail@address.com', $post_title, $post_url );
}
?>

投稿を保存すると、メールは通過しますが、target.txt は変更されません。ログにエラーが書き込まれていません。Target.txt には 777 の権限があり、以下の非プラグイン コードは正しく機能します (プラグインと同じディレクトリにあります)。target.txt を更新し、直接アクセスするとページに「woot」と表示されます。

<?php
    $myFile = "target.txt";
    $fh = fopen($myFile, 'a');
    fwrite($fh, "ANOTHER LINE hooray\n");
    fclose($fh);
    echo "woot";
?>

Wordpress プラグイン コードで何が間違っていますか?

4

1 に答える 1

2

コメントのアドバイスに従った後、fwrite()がスタンドアロンページとして呼び出されたか、Wordpressプラグインの一部として呼び出されたかによって、スクリプトの実行コンテキストが変化することが問題であることを確認しました。

スタンドアロンページでは、ローカルパスによってスクリプトと同じディレクトリに配置されます。

プラグインでは、ローカルパス構文は、fwrite()がtarget.txtを/ wp-adminフォルダーに書き込んだことを意味します。これは、プラグインが呼び出されたときのローカルパスであるためです。

于 2012-11-30T04:06:11.297 に答える