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 回答