it-swarm-ru.tech

Почему в 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
hakre

В прямом ответе на вопрос, WordPress не включает функцию для этого частично, потому что это не относится конкретно к функциональности WordPress. То есть это PHP (потенциальная) проблема, а не WordPress.

Кроме того, я бы не сказал, что WordPress обязан предоставлять обходные пути для плагинов и т.д., Которые не предоставляют функцию для возврата данных (что противоречит общему стилю WordPress).

2
Joe Hoyle

Я бы сказал, что get_posts - это WP ответ на ваш запрос. Теги шаблонов были созданы для использования в The Loop, но для любого WP '' хакера 'достаточно просто использовать вместо него get_posts () и назначить, например: $ post-> post_title переменной. Поначалу неприятно перестать полагаться на The Loop, но достаточно легко пройти мимо.

2
kevtrout

Как это может быть проще для некоторых разработчиков тем, вы должны воспринимать это так, как это делается. Но вы можете написать функцию самостоятельно:

function get_output($function){
    return call_user_func('get_'.$function);
}

Написание get_the_title () также короче, чем написание get_output ('the_title') :)

1
2ndkauboy