it-swarm.asia

Neden herhangi bir işlev çağrısının çıktısını döndürecek wordpress'te global bir işlev yok?

Şablon etiketlerimiz ve get ile başlayan bazı fonksiyonlarımız var. Bazen temalar gibi yapmak için sadece Güzel olurdu:

$title = the_title();

sonradan html kullanmak için. Bu sadece basitleştirilmiş bir örnek, doğal olarak get_the_title (); Ancak bu sadece bu işlev için çalışır.

Neden böyle bir işlev olmadığını merak ediyorum:

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

Çıkışı olan herhangi bir işlevi dönen bir işleve dönüştürebilir:

$title = get_output('the_title');

Bunun hakkında neden hiç düşünülmemiş bir fikrin var mı? Her tema yazarı veya bilgisayar korsanı, bundan yararlanabilir mi?

3
hakre

Soruya doğrudan yanıt olarak, WordPress, kısmen bunun için bir işlevi içermez, çünkü özellikle WordPress işlevi için geçerli değildir. Yani WordPress değil, bir PHP (potansiyel) problemidir.

Ayrıca, veri döndürme işlevi sağlamayan eklentiler için geçici çözümler sağlama WordPress'in sorumluluğunda olduğunu söyleyemem (genel WordPress stiline aykırıdır).

2
Joe Hoyle

İsteğiniz için get_posts öğesinin WP cevabı olduğunu iddia ediyorum. Şablon etiketleri The Loop'ta kullanılmak üzere oluşturulmuştur, ancak herhangi bir WP 'hacker'ın bunun yerine get_posts () kullanması ve örneğin bir değişkene ataması için yeterince kolaydır: $ post-> post_title. Başlangıçta sinir bozucu, The Loop'a güvenmeyi bırakmak ama geçmişe taşınmak için yeterince kolay.

2
kevtrout

Bazı tema geliştiriciler için daha kolay olabileceğinden, bunu olduğu gibi yapmalısınız. Ancak işlevi kendiniz yazabilirsiniz:

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

Get_the_title () yazısı, get_output ('the_title') :) yazmasından da daha kısadır.

1
2ndkauboy