Как отладить новый шорткод? И как получить строку из шорткода в код?

Вопрос или проблема

Я пытаюсь написать простой плагин, который получает данные из API. Я планирую считывать API-ключ из шорткода, но еще не дошел до этого.

Я написал следующий кусок кода. У меня есть наивный вопрос: как мне вообще вызвать этот код, чтобы я мог отладить его и посмотреть, что происходит?

Если это простой вопрос, то последующий будет о том, как считать API-ключ из шорткода?

class DATA_PARSING
{

private static $instance;

/**
 * Инициализирует плагин и считывает некоторые данные
 *
 * @access private
 */
private function __construct()
{
    add_action('data', [$this, 'fetchData']);
}

/**
 * Создает экземпляр этого класса
 *
 * @access public
 * @return DATA_PARSING    Экземпляр этого класса
 */
public function get_instance()
{
    if (null == self::$instance) {
        self::$instance = new self;
    }

    return self::$instance;
}

private function fetchData($apiKey)
{
    $url="https://api.website.com/data";
    $args = [
        'id' => 1234,
        'fields' => '*'
    ];
    $method = 'GET';
    $headers = array(
        'Authorization' => 'Bearer ' . $apiKey,
        'Accept' => 'application/vnd.website.v1+json',
        'content-type' => 'application/json',
    );
    $request = array(
        'headers' => $headers,
        'method' => $method,
    );

    if ($method == 'GET' && !empty($args) && is_array($args)) {
        $url = add_query_arg($args, $url);
    } else {
        $request['body'] = json_encode($args);
    }

    $response = wp_remote_request($url, $request);

    try {
        $json = json_decode($response['body']);
    } catch (Exception $e) {
        $json = null;
    }

    return $json;

}
}

Чтобы запустить этот код для тестирования, вы можете использовать инструмент wp-cli с командой eval-file. wp-cli eval-file загружает всю инфраструктуру WordPress, а затем выполняет ваш PHP-файл, поэтому вы можете использовать вызовы WordPress, такие как wp_remote_request, не помещая этот код на страницу или в плагин. Например, напишите файл с именем test.php, который создаст экземпляр класса и вызовет методы, затем выполните это с помощью:

wp-cli eval-file test.php

Я вижу, что @rudtek ответил, как получить данные из шорткода в ваш код.

Вы можете вызвать функцию, поместив этот код в шаблон.

echo fetchData('YOUR_API_HERE');

Вы должны изменить вашу первую строку с:

если вы хотите превратить это в шорткод, добавьте эту строку:

add_shortcode( 'fetch-short', 'fetchData'); 

либо прямо над, либо под вашей функцией.

Затем измените начало вашей функции на следующее:

function fetchData( $atts ) {
    $api = $atts['api'];  //это ваша новая переменная api

ваш шорткод будет

[fetch-short api="YOUR_API"]

осторожно добавьте проверки на случай, если кто-то не добавит API. как установить значение по умолчанию или проверку ошибки, если $api пустой.

Ответ или решение

Когда вы разрабатываете плагин для WordPress, часто возникают ситуации, когда вам нужно отлаживать код, особенно когда дело касается шорткодов и работы с API. Давайте рассмотрим, как вы можете эффективно отлаживать свой новый шорткод и извлекать строку из шорткода в код.

Шаги для отладки нового шорткода

  1. Настройка окружения:
    Убедитесь, что у вас установлена последняя версия WordPress и доступен инструментарий разработчика. WP-CLI является отличным инструментом для выполнения кода в контексте WordPress без необходимости помещать его в шаблоны или плагины.

  2. Создание тестового файла:
    Напишите файл, например test.php, который будет вызывать ваш шорткод и запускать необходимые функции. Пример содержимого файла:

    require_once('path/to/wp-load.php');
    $instance = DATA_PARSING::get_instance();
    echo $instance->fetchData('YOUR_API_HERE');

    После этого выполните команду:

    wp-cli eval-file test.php

    Это позволит вам загрузить всю инфраструктуру WordPress и протестировать код.

  3. Логирование:
    Используйте функции error_log() для записи данных в лог-файл. Это поможет вам понять, что происходит внутри вашего кода. Например:

    error_log('API Key: ' . $apiKey);

Извлечение строки из шорткода

Для того, чтобы прочитать API-ключ из шорткода, вам необходимо будет внести изменения в вашу функцию и добавить шорткод в WordPress. Вот как это сделать:

  1. Добавление шорткода:
    В классе DATA_PARSING измените метод __construct(), добавив регистрацию шорткода:

    add_shortcode('fetch-short', [$this, 'fetchData']);
  2. Изменение функции fetchData:
    Перепишите метод fetchData, чтобы он принимал атрибуты из шорткода:

    public function fetchData($atts) {
       $atts = shortcode_atts(array(
           'api' => 'default_api', // Значение по умолчанию
       ), $atts);
    
       $apiKey = $atts['api'];
    
       // Дальнейшая логика вашей функции...
    }
  3. Использование шорткода:
    Теперь вы можете использовать шорткод в любом месте вашего контента WordPress:

    [fetch-short api="YOUR_API_KEY"]

Заключение

Эти шаги помогут вам как отладить ваш новый шорткод, так и правильно извлечь строки из шорткодов в ваш код. Помните, что хорошая отладка включает в себя использование логов, правильный тестовый процесс через WP-CLI и адекватные проверки входных данных, чтобы избежать ошибок во время выполнения. Удачи в разработке вашего плагина!

Оцените материал
Добавить комментарий

Капча загружается...