_doing_it_wrong()
Відзначити щось, як “зроблено неправильно”. Наприклад, функція неправильна, параметр вказаний неправильно і т.д.
Повідомлення буде показано лише якщо увімкнено режим дебага – WP_DEBUG = true
.
Функція викликає хук doing_it_wrong_run , який можна використовувати з метою для обробки помилки. Наприклад цей хук стане в нагоді для робочого сайту де відключено режим дебагу, але ми хочемо ловити помилки “зроблено неправильно”. Для цього вішаємо на цей хук свою функцію та обробляємо отримані помилки, наприклад, зберігаємо їх у файл або відправляємо собі email про помилку.
Функція працює на основі функції PHP trigger_error() .
Ця функція вважається внутрішньою для використання самим ядром . Не рекомендується використовувати цю функцію у своєму коді.
Хуки з функції
Повертає
null
. Нічого.
Використання
_doing_it_wrong($function, $message, $version);
-
$function
(рядок) (обов’язковий) - Назва функції, у якій щось робиться неправильно.
-
$message
(рядок) (обов’язковий) - Повідомлення, яке пояснює, що було зроблено неправильно.
-
$version
(рядок) (обов’язковий) - Версія WordPress, з якою ця дія стала неправильною (застарілою).
Приклади
#1 Покажемо помилку, коли функція викликана не на тому хуку.
Цей приклад із ядра ВП. У ньому користувачеві повідомляється, що він викликав функцію реєстрації REST маршруту не на хуку rest_api_init , як це має бути зроблено. код register_rest_route() .
if ( ! did_action( 'rest_api_init' ) ) { _doing_it_wrong( 'register_rest_route', sprintf( /* translators: %s: rest_api_init */ __( 'REST API routes must be registered on the %s action.' ), '<code>rest_api_init</code>' ), '5.1.0' ); }
#2 Покажемо помилку, коли у функції немає глобальної змінної, з якою вона працює
У цьому прикладі для роботи функції is_archive() потрібна глобальна змінна $wp_query , це означає, що функцію потрібно викликати після того, як ця змінна визначена. Якщо вона викликається раніше, виведемо помилку про це.
function is_archive() { global $wp_query; if ( ! isset( $wp_query ) ) { _doing_it_wrong( __FUNCTION__, __( 'Conditional query tags до роботи не працює, тому що керує. Before then, they always return false.' ), '3.1.0' ); return false; } return $wp_query->is_archive(); }
список змін
З версії 3.1.0 | Введено. |
З версії 5.4.0 | Ця функція не є довгим, як “приватний”. |