Woocommerce更新订单挂钩“ save_post”不允许保存文件

时间:2018-11-09 15:13:02

标签: php wordpress woocommerce

所以我觉得这很奇怪,但也许有人可以帮忙。
当wordpress网站的管理员更新后端的订单时,我需要保存来自远程服务器的传入文件。
我正在使用的钩子是

add_action( 'save_post', 'courier_save_wc_order_fields', 10, 2 );

现在一切正常,我可以根据需要更新post_meta。
当要保存传入的PDF文件时,事情就变了。
在此垂直钩子内(我只发现过一个),我无法保存文件。
这是因为这是woocommerce即将保存到DB的时候吗?

我什至删除了所有其他代码并将其保留为

add_action( 'save_post', 'courier_save_wc_order_fields', 10, 2 );

function courier_save_wc_order_fields( $post_id ) {
    file_put_contents('incommingdata.txt', print_r("This is random text",true));
}

同样,这是唯一发生此情况的地方。 有没有更好的挂钩可以解决这个问题?

我需要一个在管理员订单页面中检查meta_box值并相应更新订单元的功能,同时与远程服务器进行通信以保存和检索文件。...除此文件保存外,其他所有方法都有效。

旁注:

$path="my_file_received.pdf"
$decodedString = base64_decode($base64string); 
$fileHandle = fopen($path, "w"); 
if ($fileHandle) { 
    fwrite($fileHandle, $decodedString); 
    fclose($fileHandle); 
    return 1; 
}

不显示错误,但文件也不存在。

1 个答案:

答案 0 :(得分:0)

所以我找到了问题的答案...

save_post钩子的URL与我使用的其他钩子不同。

所以我通常使用
file_put_contents('incommingdata.txt', print_r("This is random text",true));
我总是将文件保存在插件文件夹或主题文件夹或基本URL中。

此挂钩的URL是wp-admin文件夹,而不是基本域或插件文件夹。

要解决此问题,并确保我将解决方案保存在正确的文件夹中,

 $this_dir_of_my_file = dirname(__FILE__);
 $this_dir_of_my_file = $this_dir_of_my_file . "/Example.txt";
 file_put_contents($this_dir_of_mine, print_r("This is random text in my file.",true));