我的目标是编写一个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插件代码出错了什么?
答案 0 :(得分:2)
在遵循评论中的建议后,我确认问题是脚本的执行上下文根据fwrite()是作为独立页面还是作为Wordpress插件的一部分被调用而改变。
在独立页面中,本地路径将其放在与脚本相同的目录中。
在插件中,本地路径语法意味着fwrite()将target.txt写入/ wp-admin文件夹,因为这是调用插件时的本地路径。