Я пытаюсь выполнить функцию, только если она вызвана из определенного родителя (или функция деда, или прадедушка, и т. Д.). Я могу добиться того, что хочу, используя debug_backtrace, но я чувствую, что это не правильный способ сделать это. Возьмите это к примеру:
function savethepost($post_id) {
$parent = debug_backtrace();
if ($parent[5]['function'] == 'bulk_edit_posts') {
if ( isset( $_REQUEST['post_format'] ) && $_REQUEST['post_format'] != -1 ) {
set_post_format($post_id, $_REQUEST['post_format']);
}
}
}
Это использует обратную трассировку в функции WordPress для выполнения функции set_post_format, только если функция savethepost вызывается из функции bulk_edit_posts, чего я и пытался добиться. Но так как этот метод предназначен для отладки, можно ли использовать его таким образом? Если нет, то как еще можно добиться вызова функции, если она поступает только из определенной родительской функции?
Наткнулся на это старый вопрос что я не видел раньше. Принятый ответ применим и в этом случае.
Debug_backtrace убивает производительность, поскольку она должна подготовить трассировку вызова. Так что это не очень хорошая идея для использования. Если вам все еще нужна такая логика, попробуйте заархивировать ее с аргументом функции.