has_post_format () ve get_post_format () karşılaştırması


10

Ben sadece yazı biçimleri kavramına adım attı ve neden yazı biçimi "API" 3 fonksiyonlarından ikisi kesinlikle aynı işlevsellik sunuyor merak ediyordum. Aşağıdaki iki kavramı düşünün (A ve B):

if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();

        // A) has_post_format
        if ( has_post_format('format') )
        {
            the_excerpt(); // some special formating
        }

        // VERSUS:

        // B) 
        if ( get_post_format( $GLOBALS['post']->ID ) == 'format' )
        {
            the_excerpt(); // some special formating
        }

    } // endwhile;
} // endif;

Birisi bana neden sadece bu iki işlevi olduğunu açıklayabilir misiniz eski. get_post_format? Eğer birinin diğer işlevin yapabileceği bir şey yapamayacağı durumlara bazı örnekler verebilirseniz, özel mutlu olurum ve + 1'leyebilirim.

Yanıtlar:


12

Düzenle

has_post_format()$formatilk parametre olarak bir dize gerektirir ; Bu, yalnızca açık post format türlerini test etmek için kullanılabileceği anlamına gelir:

if ( has_post_format( $format ) {
    // Current post has the $format post format;
    // do something
}

Bir gönderinin herhangi bir gönderi biçimi olup olmadığını belirlemek için, geçerli gönderinin atanmış bir gönderi biçimi yoksa get_post_format()döndürülecek olan şunu kullanın false:

if ( false != get_post_format() ) {
    // Current post has a post format;
    // do something
}

O Not "standart" bir değil gerçek sonrası biçimi, daha ziyade bir olan tutucu atanmış bir post biçimi yok yayınlar için terim. Dahili olarak, WordPress döner falseziyade post-format-standardbu yüzden, "standart" post-biçimi türüyle ilgili sorguya, sadece kullanmak istiyorsunuz, if ( false == get_post_format() ).

orijinal

has_post_format() şartlar için yararlı olan bir BOOLEAN değeri döndürür, örneğin:

if ( ! has_post_format() ) {
     // I'm a standard-format post; do something
}

veya

if ( has_post_format( array( 'gallery', 'image' ) ) {
     // I'm a gallery or image format post; do something
}

get_post_format()çeşitli biçimlerde yararlı olan geçerli yazı biçimi türünün dize değerini döndürür. En güçlü olanlardan biri, yazı biçimine göre farklı şablon parçası dosyalarını çağırmaktır, örneğin:

get_template_part( 'entry', get_post_format() )

Bunlara örnek olarak bir yana format için "entry-aside.php" veya standart format için "entry.php" dahildir.


get_template_partGerçekten akıllı!
kaiser

Bennet - A'nızı çözüm olarak işaretlemeyi tamamlayın. Btw: Hepsi Gibi açıldı :)
kaiser

1
if ( ! has_post_format() ) {}1. (gerekli) argüman eksik olduğundan bir uyarı (en az 3.5-RC1 itibariyle) döndürür. codex.wordpress.org/Function_Reference/has_post_format
glueckpress

4

Aşağıdaki bölüm doğru değil, bu geliştirmeyi istemek için bir bilet oluşturdum .

has_post_format()Bu üzerine inşa için daha esnek has_term()üzerine inşa olan is_object_in_term(). Bu, bir dizi yazı biçimini geçirebileceğiniz anlamına gelir trueve gönderilerin bu biçimlerden birine sahip olması durumunda geri döner .

if ( has_post_format( array( 'aside', 'video' ) ) {
    // It's an aside or a video
}

Orijinal şartname bileti her ikisinden de bahsettiget_post_format() ve has_post_format()belki de her iki işlevi de olan taksonomi sistemi üzerine kurulu olduğu için?


Kesinlikle, bu, doğru / yanlış cevabınızı geri almak için belirli formatları kontrol etmenizi sağlayarak burada yapabileceğinizi daha da genişletir.
Drew Gourley

is_object_in_term()Bunun yerine işlevi kullanmanın mantıklı olup olmadığını düşündürüyor .
kaiser

1
@Jan Fabry ilk parametre olarak has_post_format()bir dize bekliyor . Bir dizi başarısız olur.
fuxia

1
@toscho: Lanet olsun, sadece kodlara bakmak yerine bunu test etmem gerektiğini biliyordum. Sonra diğer has_*işlevlerle tutarsız - bunun için bir bilet oluşturdum .
Jan Fabry

2
@Jan Fabry Cevabınızı düzeltmenin çok güzel bir yolu. :)
fuxia

3

Basit, has_post_format (), IF ifadelerinde yararlı olan bir true / false (Boolean) değeri döndürürken, get_post_format () varsa yazı biçimini döndürür ve eğer yoksa büyük olasılıkla NULL veya false değerini döndürür. Boolean değerlerini kullanmak, koşullarınızın her zaman beklediğiniz şekilde davrandığından ve has_post_format () işlevinin kolay kısa koşullara izin vermesinin iyi bir temiz yoludur:

if ( has_post_format() ) {
  //yes we do
} else {
  //no we do not
}

if ( !has_post_format() ) {
  //no we do not
} else {
  //yes we do
}

Ayrıca, bu sadece mevcut diğer WordPress işlevleriyle uyumludur. B seçeneğiniz işleri hallederken, belki de ortalamanın biraz üzerinde WordPress kullanıcısının aşina olduğundan biraz daha özel bir bilgi gerektirir.


Bana get_adjacent_postve next_post_linkşeyleri hatırlatıyor .
kaiser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.