Я создаю страницу тип ( тип page) на моем сайте
https://t****n.ru/ с помощью post-запроса на мой сайт и соответствующего кода который указан у меня в файле functions.php моей темы.
Но запись в базе данных сайта не появляется (не вижу новую запись в phpmyadmin) до тех пор пока я не загружу юрл с созданной страницей в моем браузере или же когда я загружу в браузере в админке список страниц сайта, тоесть этот url:
https://t*****n.ru/wp-admin/edit.php?post_type=page&orderby=date&order=desc
....и только тогда запись в БД сайта появляется!
Подскажите почему так? И где можно посмотреть логи происходящих процессов приводящих к отображению в phpmyadmin новой записи?
вот код в functions.php :
global $newly_created_post_id;
$newly_created_post_id = ""; // Инициализируем пустой строкой
// Функция для создания файла лога
function log_to_file($message) {
$log_file_path = '/home/e/el~~~~скрыл~~~~84/t~~скрыл~~~n.ru/public_html/BAS.txt';
file_put_contents($log_file_path, $message . PHP_EOL, FILE_APPEND);
}
// Определение пароля для проверки запросов
$my_special_password = "F~~~~скрыл~~~~s";
// Ассоциативный массив с ID родительских страниц
$parent_page_ids = array(
'en' => 42926,
'zh' => 42906,
'es' => 42910,
'pt' => 42912,
'id' => 42914,
'fr' => 42916,
'ja' => 42918,
'de' => 42920,
'tr' => 42922,
'it' => 42924,
);
// Функция для проверки пароля
function check_request_password() {
global $my_special_password;
if (isset($_REQUEST['password']) && $_REQUEST['password'] === $my_special_password) {
return true;
}
return false;
}
// Функция для создания страницы
function create_page() {
global $parent_page_ids;
global $wpdb;
// Step 1: Receive data from BAS
$title = isset($_REQUEST['A_TITLE']) ? $_REQUEST['A_TITLE'] : 'No Title';
// Step 2: Process the data
$processed_title = strtoupper($title);
// Step 3: Save the processed result
$title = $processed_title;
$content = "<br><br><br><img rel='preload' as='image' title='{$_REQUEST['PODPIS_TITILE_DLA_KARTINKI_DLA_INDEX_YANDEX_GOOGLE']}' src='https://t~~скрыл~~~n.ru/all_webp_images/{$_REQUEST['G_PRISTAVKA_DLA_WEBP_KARTINKI']}' alt='{$_REQUEST['PODPIS_TITILE_DLA_KARTINKI_DLA_INDEX_YANDEX_GOOGLE']}' rel='nofollow' width='675' height='{$_REQUEST['IMAGE_HEIGHT']}' class='alignnone size-medium' /> <br><br> {$_REQUEST['TEXT_BOLSHOY_STATIY']}";
$language = isset($_REQUEST['VZIALI_ODIN_JAZIK']) ? strtolower(trim(strval($_REQUEST['VZIALI_ODIN_JAZIK']))) : '';
$url_end = isset($_REQUEST['E_PRISTAVKA_K_URL_NEWS_ZIFRA']) ? $_REQUEST['E_PRISTAVKA_K_URL_NEWS_ZIFRA'] : '';
$full_page_slug = $url_end;
$page = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => 'page',
'post_name' => $full_page_slug,
);
if ($language !== 'ru' && isset($parent_page_ids[$language])) {
$page['post_parent'] = $parent_page_ids[$language];
}
return wp_insert_post($page, true);
}
function update_meta_tags($post_id) {
global $wpdb;
// Вывод $_REQUEST['SEO_TITLE'] и $_REQUEST['META_DESC'] перед обновлением
log_to_file("SEO_TITLE: " . $_REQUEST['SEO_TITLE']);
log_to_file("META_DESC: " . $_REQUEST['META_DESC']);
$seo_title = isset($_REQUEST['SEO_TITLE']) ? $_REQUEST['SEO_TITLE'] : '';
$meta_description = isset($_REQUEST['META_DESC']) ? $_REQUEST['META_DESC'] : '';
$update_result = $wpdb->update(
'oocnb_aioseo_posts',
array(
'title' => $seo_title,
'description' => $meta_description
),
array('post_id' => $post_id)
);
if (false === $update_result) {
log_to_file('Failed to update SEO title and description for post_id: ' . $post_id . ". SQL error: " . $wpdb->last_error);
} else {
log_to_file('Successfully updated SEO title and description for post_id: ' . $post_id);
// Initialize retry count
$retries = 0;
while ($retries < 10) {
// Очистка кэша
wp_cache_flush();
if (function_exists('w3tc_flush_all')) {
w3tc_flush_all();
}
// Чтение из БД после обновления
$row = $wpdb->get_row("SELECT title, description FROM oocnb_aioseo_posts WHERE post_id = $post_id", ARRAY_A);
if ($row) {
log_to_file("Read from DB: SEO_TITLE: " . $row['title'] . ", META_DESC: " . $row['description']);
return; // Выходим из функции если удалось прочитать данные
} else {
log_to_file('Failed to read updated values from the database for post_id: ' . $post_id);
$retries++; // Увеличиваем счетчик попыток
sleep(5); // Ждем 5 секунды перед следующей попыткой
}
}
// Если мы вышли из цикла, значит попытки исчерпаны
log_to_file('Tried 10 times to read the database but still can\'t read for post_id: ' . $post_id);
}
}
// Функция для создания страницы и обновления метатегов
function create_and_update_page() {
global $wpdb;
global $parent_page_ids;
global $newly_created_post_id;
if (!check_request_password()) {
return;
}
if ($_REQUEST['action_type'] !== 'create_page') {
log_to_file('action_type is not create_page.');
return;
}
// Создание новой страницы и временный вывод результата wp_insert_post
$newly_created_post_id = create_page();
log_to_file("Result of wp_insert_post: " . var_export($newly_created_post_id, true));
// Проверка на ошибки при создании страницы
if (is_wp_error($newly_created_post_id)) {
log_to_file('Error creating new post: ' . $newly_created_post_id->get_error_message());
return;
}
// Шаг 1: Ожидание, пока $newly_created_post_id станет длиннее 2 символов
$tries = 0;
while (strlen($newly_created_post_id) <= 2) {
sleep(1);
$tries++;
if ($tries >= 30) {
log_to_file("Waited too long for newly_created_post_id to be longer than 2 characters.");
return;
}
}
// Шаг 2: Проверка наличия такой страницы в базе данных
$post_exists = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}posts WHERE ID = $newly_created_post_id");
if (!$post_exists) {
log_to_file("The post with id $newly_created_post_id does not exist in the database.");
return;
} else {
log_to_file("The post with id $newly_created_post_id successfully found in the database.");
}
// Шаг 3: Обновление метатегов
update_meta_tags($newly_created_post_id);
}