Почему не присваивается родительская страница, при создании дочерней страницы через POST запрос?

Опубликую страницу (тип page) на моем WP сайте .
Это я делаю путем отправки POST запроса на мой сайт.

Добавил в файл functions.php на моей WP темы код (см ниже), который принимает данные от post запроса и создает с этими данными страницу (тип page).

Страница нормально создаётся если я в переменой VZIALI_ODIN_JAZIK передаю значение ru, и страница создаётся такая: https://t********n.ru/news9999

НО! Если в переменой VZIALI_ODIN_JAZIK передаю значение например en то страница не создаётся вообще, хотя статут ответа от POST запроса приходит 200.

Хотя в коде я указал что если в VZIALI_ODIN_JAZIK стоят данные отличные от ru, то нужно создать дочернюю страницу присвоив ей эту родительскую страницу https://t********n.ru/en/ (у родительской страницы такой id: 42673) и вроде создаваемая страница должна создастся с таким url: https://t********n.ru/en/news9999

Вопрос: Почему при создании дочерней страницы ей не присваивается родительская страница?

Код в файле functions.php который за это отвечает:
// Определение пароля для проверки запросов
$my_special_password = "F6f*****СкрылДляВопроса*******0tf";

// ID родительской страницы
$parent_page_id = 42673;

// Функция для проверки пароля
function check_request_password() {
    global $my_special_password;

    if (isset($_REQUEST['password']) && $_REQUEST['password'] === $my_special_password) {
        return true;
    }
    return false;
}

// Функция для создания страницы
function create_translated_page() {
    global $parent_page_id;  // Используем глобальную переменную

    if (!check_request_password()) {
        return;
    }

    $title = isset($_REQUEST['A_TITLE']) ? $_REQUEST['A_TITLE'] : 'No 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'] : '';

        // Формируем конечный URL
         $full_page_slug = $url_end;

    $page = array(
        'post_title'    => $title,
        'post_content'  => $content,
        'post_status'   => 'publish',
        'post_type'     => 'page',  
        'post_name'     => $full_page_slug,
    );

    // Если язык не 'ru', устанавливаем родительскую страницу
    if ($language !== 'ru') {
        $page['post_parent'] = $parent_page_id;
    }

    // Создание страницы и логирование возможных ошибок
    $result = wp_insert_post($page, true);
    if (is_wp_error($result)) {
        error_log($result->get_error_message());
    }
}

// Добавляем функцию create_translated_page к инициализации WordPress
add_action('init', 'create_translated_page');
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
Sasha_Odesskiy
@Sasha_Odesskiy
бла-бла-бла!
Возможно, в условии проблема, "
if ($language !== 'ru') {
$page['post_parent'] = $parent_page_id;
}

У тебя тут ответ, если не "ru", попробуй добавить ещё и если не "en".
***
P.S. В целом, рекомендую использовать framework CodeIgniter 4, там есть возможность с коробки использовать локализацию и очень удобно к тому же весь нужный функционал есть там.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы