Изучим такую функцию PHP как чтение / запись файлов. Как оказалось, это довольно таки простые манипуляции.
Путь к файлу необходимо указывать с самого сервера. Пример:
/home/t/drct6q/site.opttour.ru/public_html/wp-content/themes/testwerk/a.txt
Пример записи в файл
$file = '/home/t/tiberi6w/oil.tiberi6w.beget.tech/public_html/wp-content/uploads/woocommerce-1c/sale/orders.xml';
// Открываем файл для получения существующего содержимого
$current = file_get_contents($file);
// Добавляем новое содержимое
$current = $dom->saveXML();
// Пишем содержимое обратно в файл
file_put_contents($file, $current);
Если нужно не перезаписывать а добавлять строки, меняем:
$current .= $dom->saveXML();
Еще один вариант реализации записи файла
<?php
$blogs = get_sites( array(
'fields' => 'ids',
'number' => 999,
'site__not_in' => array(1)
) );
// Получаем все товары
$wcmps_records = get_posts( array(
'post_type' => 'product',
'post_status' => 'publish',
'fields' => 'ids',
'posts_per_page' => -1,
) );
$path_srv = $_SERVER['DOCUMENT_ROOT'];
$path_thm = parse_url( get_stylesheet_directory_uri(), PHP_URL_PATH );
$filename = $path_srv.$path_thm.'/update-log.txt';
if ( $blogs != null ) {
file_put_contents($filename, "");
foreach ( $blogs as $blog ) { // перебираем сайты
$source_blog_id = 1;
$type = 'post_type';
$type_name = 'product';
foreach ( $wcmps_records as $wcmps_record ) { // перебираем товары
custom_product_update( $wcmps_record, $source_blog_id, $type, $type_name, $blog ).'<br>';
}
echo 'Сайт '.$blog.' обновлен<br>';
//записываем в файл последний обновленный сайт
$text = 'Сайт '.$blog.' обновлен'.PHP_EOL;
file_put_contents($filename, $text, FILE_APPEND);
}
//записываем в файл успешное обновление всех сайтов
$text = 'Все сайты обновлены';
file_put_contents($filename, $text);
}
?>
PHP_EOL — перенос строки
FILE_APPEND — не перезаписывать файл, а добавлять строки