has_post_format () vs get_post_format ()

10

Je viens juste d'entrer dans le concept des formats de publication et je me demandais pourquoi deux fonctions sur 3 du format de publication "API" offrent les mêmes fonctionnalités. Considérez les deux concepts suivants (A vs. 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;

Quelqu'un pourrait-il m'expliquer s'il vous plaît pourquoi il y a ces deux fonctions plutôt que ex. get_post_format ? Si vous pouviez me proposer des exemples de situations dans lesquelles l’un n’est pas capable de quelque chose que l’autre fonction peut faire, je serais très heureux et le ferait +1.

    
posée kaiser 08.04.2011 - 12:57

3 réponses

12

Modifier

has_post_format() requiert une chaîne, $format , en tant que premier paramètre; ce qui signifie qu'il ne peut être utilisé que pour tester des types post-format explicites:

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

Pour déterminer si une publication a un format de publication, utilisez get_post_format() , qui renverra false si la publication en cours n'a pas de format de publication attribué:

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

Notez que "standard" n'est pas un format actuel , mais plutôt un espace réservé pour les publications qui n'ont pas un format de message attribué. En interne, WordPress renvoie false plutôt que post-format-standard . Par conséquent, pour rechercher le type de post-format "standard", il vous suffit d'utiliser if ( false == get_post_format() ) .

Original

has_post_format() renvoie une valeur BOOLEAN, utile pour les conditions, par exemple:

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

ou

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

get_post_format() renvoie la valeur de chaîne du type de format de publication en cours, ce qui est utile de plusieurs manières. L’un des plus puissants consiste à appeler différents fichiers de modèle en fonction du format de publication, par exemple:

.
get_template_part( 'entry', get_post_format() )

Ce qui inclura, par exemple "entry-apart.php" pour un format réservé ou "entry.php" pour un format standard.

    
réponse donnée Chip Bennett 08.04.2011 - 18:45
4

La partie suivante est incorrecte, j’ai créé un ticket pour demander cette amélioration.

has_post_format() est plus flexible car il s’appuie sur has_term() , qui construit lors de is_object_in_term() . Cela signifie que vous pouvez passer un tableau de formats de publication et qu'il retournera true si la publication a l'un de ces formats.

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

Le ticket de spécification d'origine déjà mentionné , à la fois get_post_format() et has_post_format() , peut-être parce qu'il repose sur le système de taxonomie a également les deux fonctions?

    
réponse donnée Jan Fabry 08.04.2011 - 13:45
3

Simple, has_post_format () renvoie une valeur true / false (booléenne) qui est utile dans les instructions IF, tandis que get_post_format () renvoie le format de publication, s'il en existe un, et probablement NULL ou false s'il n'y en a pas. Utiliser des valeurs booléennes est un bon moyen de s'assurer que vos conditions se comportent toujours comme vous le souhaitiez et que la fonction has_post_format () permet de créer de bonnes conditions courtes et faciles:

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

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

En outre, cela correspond tout simplement aux autres fonctionnalités existantes de WordPress. Si votre option B donne les résultats escomptés, elle nécessite des connaissances un peu plus spécialisées que peut-être l’utilisateur WordPress légèrement supérieur à la moyenne.

    
réponse donnée Drew Gourley 08.04.2011 - 13:30

Lire d'autres questions sur les étiquettes