Хук заказа обновлений WooCommerce "save_post" не позволяет сохранять файлы - PullRequest
0 голосов
/ 09 ноября 2018

Так что я нахожу это странным, но, возможно, кто-то может помочь.
Мне нужно сохранить входящий файл с удаленного сервера, когда администратор сайта 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; 
}

Не отображается ошибка, но файл также не существует.

1 Ответ

0 голосов
/ 12 ноября 2018

Итак, я нашел ответ на свой вопрос ...

У хука 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...