Почему в wordpress нет глобальной функции для возврата вывода любого вызова функции?
У нас есть теги шаблонов и некоторые функции, которые начинаются с get. Иногда было бы просто неплохо в темах сделать что-то вроде:
$title = the_title();
Чтобы использовать html позже. Это всего лишь упрощенный пример, естественно, есть такая функция, как get_the_title(); Но это работает только для этой функции.
Мне интересно, почему нет такой функции, как эта:
function get_output() {
$args = func_get_args();
$callback = array_shift($args);
ob_start();
call_user_func_array($callback, $args);
return ob_get_clean();
}
, который может преобразовать любую функцию, имеющую выходные данные, в возвращаемую функция:
$title = get_output('the_title');
Есть идеи, почему об этом никогда не задумывались? Каждый автор темы или хакер может использовать это, не так ли?
3 answers
В прямом ответе на вопрос WordPress не включает функцию для этого отчасти потому, что она специально не применяется к функциям WordPress. Т.е. это проблема PHP (потенциальная), а не WordPress.
Кроме того, я бы не сказал, что WordPress несет ответственность за обеспечение обходных путей для плагинов и т. Д., Которые не предоставляют функцию для возврата данных (что противоречит общему стилю WordPress).
Я бы сказал, что get_posts
является ответом WP на ваш запрос. Теги шаблонов были созданы для использования в цикле, но любому "хакеру" WP достаточно легко использовать вместо этого get_posts() и назначить, например: $post->post_title переменной. Поначалу неприятно перестать полагаться на Цикл, но достаточно легко пройти мимо.
Поскольку некоторым разработчикам тем может быть проще, вы должны воспринимать это так, как это делается. Но вы можете написать функцию самостоятельно:
function get_output($function){
return call_user_func('get_'.$function);
}
Запись get_the_title() также короче, чем запись get_output('the_title'):)