Ответы в темах

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • @fierevere спасибо, написал

    уже сам разобрался. Спасибо.

    вот код в 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);
    }
     
    Автор mik777em

    (@mik777em)

    спасибо всем. вопрос я сам решил!

Просмотр 4 ответов — с 1 по 4 (всего 4)