web-dev-qa-db-fra.com

get_post_format () vs get_post_format ()

Je suis juste entré dans le concept de formats de publication et je me demandais pourquoi deux des trois fonctions du format de publication "API" offrent la même fonctionnalité. 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 à la place seulement 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 heureux et plus heureux.

10
kaiser

Modifier

has_post_format() nécessite 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 le format de publication any, 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 post-format réel, mais plutôt un terme espace réservé pour les publications auxquelles aucun format n'a été attribué. En interne, WordPress renvoie false plutôt que post-format-standard. Par conséquent, pour interroger 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 pièce modèles 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.

12
Chip Bennett

La partie suivante n'est pas correcte, j'ai créé un ticket pour demander cette amélioration.

has_post_format() est plus flexible car il repose sur has_term() , qui repose sur is_object_in_term() . Cela signifie que vous pouvez transmettre 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 original déjà mentionné les deux get_post_format() et has_post_format(), peut-être parce qu'il repose sur le système de taxonomie qui a également les deux fonctions?

4
Jan Fabry

Has_post_format () renvoie simplement une valeur true/false (booléenne) 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 des 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 à fait aux autres fonctionnalités existantes de WordPress. Bien que 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.

3
Drew Gourley