it-swarm-pt.tech

Por que não existe uma função global no wordpress para retornar a saída de qualquer chamada de função?

Temos tags de template e algumas funções que começam com get. Às vezes, seria apenas bom em temas para fazer como:

$title = the_title();

para usar o html mais tarde. Este é apenas um exemplo simplificado, naturalmente, há alguma função como get_the_title (); Mas isso funciona apenas para essa função.

Eu estou querendo saber por que não existe tal função como esta:

function get_output() {
    $args     = func_get_args();
    $callback = array_shift($args);
    ob_start();
    call_user_func_array($callback, $args);
    return ob_get_clean();
}

Isso poderia converter qualquer função que tenha saída em uma função de retorno:

$title = get_output('the_title');

Alguma idéia por que isso nunca foi pensado? Todo autor de um tema ou hacker pode fazer uso de tal, certo?

3
hakre

Em resposta direta à pergunta, o WordPress não inclui uma função para isso, em parte porque não se aplica especificamente à funcionalidade do WordPress. Ou seja é um problema PHP (potencial), não WordPress.

Além disso, eu não diria que é responsabilidade do WordPress fornecer soluções alternativas para plugins, etc, que não fornecem uma função para retornar dados (que é contra o estilo geral do WordPress).

2
Joe Hoyle

Eu diria que get_posts é a resposta WP do seu pedido. Tags de modelo foram criadas para uso no The Loop, mas é fácil o suficiente para qualquer WP 'hacker' usar get_posts (), e atribuir, por exemplo: $ post-> post_title a uma variável. É frustrante no começo, parar de depender do The Loop, mas é fácil o suficiente para passar.

2
kevtrout

Como pode ser mais fácil para alguns desenvolvedores de temas, você precisa fazer isso da maneira como é feito. Mas você pode escrever a função você mesmo:

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

Escrever get_the_title () também é menor que escrever get_output ('the_title') :)

1
2ndkauboy