ГлавнаяБлогErrors / FixesПолучить адрес браузера внутри короткого кода плагина, использующего REST API
Errors / Fixes5 сентября 2026 г.2 мин

Получить адрес браузера внутри короткого кода плагина, использующего REST API

Как получить адрес браузера внутри shortcode, использующего REST API в WordPress ## Проблема и контекст В процессе разработки WordPress-плагина возникла проблема с получением текущего URL браузера внутри shortcode. В...

Как получить адрес браузера внутри shortcode, использующего REST API в WordPress

Проблема и контекст

В процессе разработки WordPress-плагина возникла проблема с получением текущего URL браузера внутри shortcode. В функции functions.php была объявлена глобальная переменная $current_page, которая должна содержать полный URL текущей страницы. Однако при попытке получить этот URL внутри shortcode, вызываемого плагином YMC Filter, вместо ожидаемого результата возвращается путь к REST API.

Анализ проблемы

Для понимания проблемы важно отметить, что внутри shortcode используется функция REST API для фильтрации постов (wp-json/ymc/v1/posts/filter). Это может влиять на доступность переменных сервера и их значение внутри функции shortcode. В результате, переменная $current_page не содержит ожидаемого значения.

Решение проблемы

Использование функций WordPress

Чтобы получить текущий URL браузера, можно использовать встроенные функции WordPress, такие как get_permalink() или site_url(). Эти функции позволяют получить полный URL текущей страницы без необходимости использования глобальных переменных и серверных переменных.

Пример кода

add_shortcode('tag', function ($atts) {
    $permalink = get_permalink();
    echo "current_page = " . esc_url($permalink);
});

Использование JavaScript

Если вам необходимо получить текущий URL браузера из shortcode и передать его на сторону клиента, вы можете использовать JavaScript для получения URL и его последующего отображения.

Пример кода

add_shortcode('tag', function ($atts) {
    ob_start();
    ?>
    <script>
        document.write(window.location.href);
    </script>
    <?php
    return ob_get_clean();
});

Работа с REST API

Если ваша цель – использовать данные REST API внутри shortcode, важно убедиться, что данные правильно передаются и обрабатываются. Для этого можно использовать функции для работы с REST API, такие как wp_remote_get() или rest_api_init().

Пример кода

add_shortcode('tag', function ($atts) {
    $response = wp_remote_get(home_url('/wp-json/ymc/v1/posts/filter'));
    if (is_wp_error($response)) {
        echo 'Ошибка: ' . $response->get_error_message();
    } else {
        $body = wp_remote_retrieve_body($response);
        echo 'Результат: ' . json_decode($body)->filter;
    }
});

Советы и рекомендации

  1. Используйте встроенные функции WordPress: Вместо работы с глобальными переменными и серверными переменными, используйте встроенные функции WordPress для получения URL.
  2. Работайте с JavaScript: Если вам необходимо получить текущий URL браузера из shortcode и передать его на сторону клиента, используйте JavaScript для получения URL и его последующего отображения.
  3. Проверьте работу с REST API: Убедитесь, что ваши запросы к REST API правильно обрабатываются и возвращают ожидаемые результаты.

Заключение

Получение текущего URL браузера внутри shortcode может быть сложной задачей, особенно если вы работаете с REST API. Использование встроенных функций WordPress и JavaScript поможет решить эту проблему и обеспечит правильную работу вашего кода.