wp_debug_backtrace_summary()
Отримує трасування з назвами функцій — список назв усіх функцій/методів, які були викликані для того, щоб дістатися поточного місця в коді (звідки була ця функція).
Список виводиться у вигляді назв функцій через кому.
Працює на основі PHP функції debug_backtrace() .
1 раз – 0.000001 сек
(швидкість світла) | 50000 разів – 0.23 сек
(дуже швидко) |
PHP 7.1.11, WP 4.9.8
(швидкість світла) | 50000 разів – 0.23 сек
(дуже швидко) |
PHP 7.1.11, WP 4.9.8
Хуків немає.
Повертає
Строку|Массив
. Назви функцій через кому або масив назв де найближча функція буде знаходиться в 0 елементі масиву.
Використання
wp_debug_backtrace_summary($ignore_class, $skip_frames, $pretty);
-
$ignore_class
(рядок) -
Назва класу, який потрібно пропустити у списку. Усі методи зазначеного класу нічого очікувати показані в результаті.
Типово: null -
$skip_frames
(число) -
Кількість елементів (назв функцій), які потрібно пропустити. Пропускатимуться найближчі назви.
За замовчуванням: 0 -
$pretty
(true/false) -
Який результат потрібний?
true
– Рядок зі списком назв.
false
– Масив зі списком назв.
Типово: true
Приклади
#1 Демонстрація того, що виводить функція
Для прикладу, підключимося на хук pre_get_posts і подивимося, що поверне wp_debug_backtrace_summary() з різними параметрами:
add_filter( 'pre_get_posts', 'my_function'); function my_function(){ $backtrace = wp_debug_backtrace_summary(); /* require('/sites/test.ru/wp-blog-header.php'), wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts, do_action_ref_array, WP_Hook->do_action, WP_Hook->apply_filters, my_function */ // Уберм методи класу 'WP_Hook' $backtrace = wp_debug_backtrace_summary( 'WP_Hook' ); /* require('/sites/test.ru/wp-blog-header.php'), wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts, do_action_ref_array, my_function */ // Уберм 5 останніх елементів // При підрахунку елементів параметр $ignore_class не враховується, тобто. елементи вважаються ніби `$ignore_class=null`. $backtrace = wp_debug_backtrace_summary( 'WP_Hook', 5); //> require('/sites/test.ru/wp-blog-header.php'), wp, WP->main, WP->query_posts, WP_Query->query // Отримаємо масив $backtrace = wp_debug_backtrace_summary( 'WP_Hook', 5, false ); /* Array( [0] => WP_Query->query [1] => WP->query_posts [2] => WP->main [3] => wp [4] => require('/sites/test.ru/wp-blog-header.php') ) */ }
#2 Змінимо формат часу у віджеті “Свіжі записи”
На жаль, у віджеті “Свіжі записи” немає жодних спеціальних хуків, щоб змінити формат відображення дати та часу, але ми можемо використовувати наступну хитрість:
add_filter( 'pre_option_date_format', function ( $pre_option ) { $ backtrace = wp_debug_backtrace_summary (null, 0, false); if ( in_array( 'WP_Widget_Recent_Posts->widget', $backtrace ) ) { return 'G:i'; } return $pre_option; } );
нотатки
список змін
З версії 3.4.0 | Введено. |