Так что я нахожу это странным, но, возможно, кто-то может помочь.
Мне нужно сохранить входящий файл с удаленного сервера, когда администратор сайта WordPress обновляет порядок в бэкэнде.
Крюк, который я использую,
add_action( 'save_post', 'courier_save_wc_order_fields', 10, 2 );
Теперь все работает отлично, и я могу обновить post_meta, как мне нужно.
Когда дело доходит до сохранения входящего файла PDF, дела идут на юг.
внутри этого перкулярного крючка (только один я когда-либо нашел) я не могу сохранять файлы.
Это потому, что это когда woocommerce собирается сохранить в БД?
Я даже удалил весь другой код и оставил его как
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;
}
Не показывает ошибку, но файл также не существует.
Так что я нашел ответ на свой вопрос …
save_post
Hook имеет другой 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));
Других решений пока нет …