PHP işlevinden döndürülen verileri yakalamak için en iyi yolu nedir?

5 Cevap php

Ben Wordpress ile programlama ve öğrenme yeni duyuyorum.

the_title(); //outputs the title of the page

Ben strtolower ve str_replace fonksiyonları ile işleyebilirsiniz böylece bir dize değişkeni içine sayfanın başlığı yakalamak istiyorum.

Ben iş için kazanılmış tek yolu çıkış tamponlama ile.

ob_start();
the_title();
$result = ob_get_clean();

echo str_replace(" ","-",strtolower($result));

/*there has got to be an easier way....
i dont fully understand why */

str_replace(" ","-",strtolower(the_title()));

Ben yanlış ne yapıyorum?

5 Cevap

Gerçekten ne arıyorsun wp_title fonksiyonu ise, sürer 2 argüman onu göstermek ya da dönmelidir olsun ya da olmasın bir boolean. : Bu nedenle daha sonra bunu yapabilirsiniz, var onu dönecektir yanlış onu geçmek

$mytitle = wp_title(null, false);

Aksi takdirde, tek seçenek aradığınız fonksiyonunu bulmak ve kaynak kodunu değiştirmek için.

Hiç kolay bir yolu yoktur. Sizin fonksiyonu return dize, o prints bu nedenle size çıkış yakalamak istiyorsanız çıkış tamponlama kullanmak zorunda değildir.

Bu aşağıdaki örnekte f1 () ve f2 () arasındaki fark.

// Returns a string, prints nothing.
function f1() {
    return "String";
}

// Prints a string, returns nothing.
function f2() {
    echo "String";
}

Wordpress den program öğrenmek için HORRIBLE app. "Sadece çalışmak" ama onlar çok özel görevler "içinde 'Döngü'" yapmak olduğunu, bu küresel işlevlerini kullanır. Dediğim gibi, bu iyi bir kod olmalı ne korkunç bir örneğidir.

Neyse ki (sizin için) sadece aradığınız kısmını iade diğer işlevleri vardır. Bana sadece ne gerek yerine yazmak, okumak a full listing here. Olabilir Eğer herhangi bir yerde kullanabilirsiniz efsanevi döngü içinde olan ve olması gereken yere not ilgileneceğim.

Gibi olur orada unvanını almak için daha fazla yolu vardır, ama ben gerçekten böyle bir şey yapacağını, bu örnek için hayal oldu:

$this_post = get_post($post); // I *think* $post is the post ID inside the loop though I could be wrong
echo $this_post->post_title;

Ama başka bir afiş (doğru) Eğer geçerli döngü başlığı kapmak için oldukça basit bir wp_title () işlevini kullanabilirsiniz diyor.

Bu belki Wordpress programlama öğrenme kötü bir fikir olduğunu açıklamak isteyen beni geri getiriyor. Onlar şeylerin üstünde tutmak için neredeyse imkansız olduğunu aynı şeyi lanet yapmanın çok lanetli bir yol var.

Blog <?php echo $post->title; ?> tüm kurnazca farklı yapıyor, sayısız yollar var gerçekten çok basit bir veri seti (hatta daha RP'nin durumunda tamamen normalleştirilmiş değil çünkü) ama yerine sadece çıktı bir başlık için bir yol olan daha şeyler.

Eğer gerçekten basit bir blog motoru oluşturarak, (yerine WP internals olan bok yolunuzu kesmek) programlamak öğrenmek istiyorsanız, birçok insan, yeni bir dil içine almak nasıl kesinlikle var ... Oldukça hızlı ve eğlenceli veya çerçeve.

Eğer really eğlenmek istiyorsanız, Django bakabilirsiniz.


Wordpress rant yeter. Bunu yapmanın 100 yolu yok gelecekte böyle bir şey kavga ediyorsanız, ben gerçekten çıkış tampon yakalama tavsiye etmem. Bu nispeten basit bir şey için kaynakların bir bütün Tamamen dolu kullanır.

En kolay yolu sadece, orijinal fonksiyonu için kaynak alarak yeni bir fonksiyon içinde anlaşmazlık ve return ile echo değiştirme gibi basit olabilir.

Sadece orada erken dönen kırmak olabilir işlemek için bazı veritabanı bağlantısı olabilir ... Yani eko yerine orada dönen son açıklama, değilse, bir değişken olarak dize depolamak ve işlevi sonunda iade edebilir unutmayın.

Sadece Id Sizinle benim nihai çözüm payı düşündüm.

Bu wordpress bedenim Etiketleri benzersiz id vermek oldu. * /

$title =wp_title(null,false);
echo strtolower(str_replace(' ','-',ltrim($title)));


//without the ltrim() 2 dashes are created before the title.

Wordpress hemen hemen her 'the_*' fonksiyonu 'get_the_*' muadili vardır. Bu nedenle, sadece kullanmak zorunda

echo str_replace(" ","-",get_the_title());

Ve bir cazibe gibi çalışmak için gidiyor. get_the_excerpt() da var, get_the_content () ve the_permalink () hangi şekilde adlandırma kuralı (Tanrı ben yazdım bilir kaç kez "get_the_permalink()" kırar ve onu yapmadım neden var sinirli ' t iş)

Şerefe!