it-swarm-eu.dev

Proč neexistuje žádná globální funkce?

Máme šablony tagů a některé funkce, které začínají dostat. Někdy by to bylo prostě hezké v tématech, jako je:

$title = the_title();

použít html později. Toto je jen zjednodušený příklad, přirozeně existuje nějaká funkce jako get_the_title (); Ale to funguje pouze pro tuto funkci.

Zajímalo by mě, proč takováto funkce není taková:

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

To by mohlo převést jakoukoliv funkci, která má výstup do funkce návratu:

$title = get_output('the_title');

Nějaká představa, proč se o tom nikdy nepřemýšlelo? Každý autor motivu nebo hacker může takové, správně?

3
hakre

V přímé reakci na otázku, WordPress nezahrnuje funkci pro toto částečně, protože se nevztahuje konkrétně na funkci WordPress. Tj. je to problém PHP (potenciální), ne WordPress.

Také bych neřekl, že je to zodpovědnost za WordPress poskytovat řešení pro pluginy atd., Které neposkytují funkci pro návrat dat (což je proti obecnému stylu WordPressu).

2
Joe Hoyle

Řekl bych, že get_posts je odpovědí WP na vaši žádost. Šablony tagů byly vytvořeny pro použití v The Loop, ale pro všechny WP 'hackery' je snadné použít místo get_posts () místo toho a přiřadit například: $ post-> post_title k proměnné. Zpočátku je to frustrující, přestat se spoléhat na The Loop, ale snadno se pohybovat kolem.

2
kevtrout

Pro některé vývojáře motivů to může být jednodušší. Funkci však můžete napsat sami:

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

Zápis get_the_title () je také kratší než zápis get_output ('the_title') :)

1
2ndkauboy