Вопрос или проблема
Я пытаюсь написать простой плагин, который получает данные из 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. Давайте рассмотрим, как вы можете эффективно отлаживать свой новый шорткод и извлекать строку из шорткода в код.
Шаги для отладки нового шорткода
-
Настройка окружения:
Убедитесь, что у вас установлена последняя версия WordPress и доступен инструментарий разработчика. WP-CLI является отличным инструментом для выполнения кода в контексте WordPress без необходимости помещать его в шаблоны или плагины. -
Создание тестового файла:
Напишите файл, например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 и протестировать код.
-
Логирование:
Используйте функцииerror_log()
для записи данных в лог-файл. Это поможет вам понять, что происходит внутри вашего кода. Например:error_log('API Key: ' . $apiKey);
Извлечение строки из шорткода
Для того, чтобы прочитать API-ключ из шорткода, вам необходимо будет внести изменения в вашу функцию и добавить шорткод в WordPress. Вот как это сделать:
-
Добавление шорткода:
В классеDATA_PARSING
измените метод__construct()
, добавив регистрацию шорткода:add_shortcode('fetch-short', [$this, 'fetchData']);
-
Изменение функции
fetchData
:
Перепишите методfetchData
, чтобы он принимал атрибуты из шорткода:public function fetchData($atts) { $atts = shortcode_atts(array( 'api' => 'default_api', // Значение по умолчанию ), $atts); $apiKey = $atts['api']; // Дальнейшая логика вашей функции... }
-
Использование шорткода:
Теперь вы можете использовать шорткод в любом месте вашего контента WordPress:[fetch-short api="YOUR_API_KEY"]
Заключение
Эти шаги помогут вам как отладить ваш новый шорткод, так и правильно извлечь строки из шорткодов в ваш код. Помните, что хорошая отладка включает в себя использование логов, правильный тестовый процесс через WP-CLI и адекватные проверки входных данных, чтобы избежать ошибок во время выполнения. Удачи в разработке вашего плагина!