has_post_format () vs. get_post_format ()

10

Acabo de entrar en el concepto de formatos de publicación y me preguntaba por qué hay dos de las 3 funciones del formato de publicación "API" que ofrece la misma funcionalidad. Considere los siguientes dos conceptos (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;

¿Podría alguien explicarme por qué existen esas dos funciones en lugar de ex. %código%? Si pudieras ofrecerme algunos ejemplos de situaciones en las que una no sea capaz de hacer algo que la otra función puede hacer, sería especialmente feliz y +1.

    
pregunta kaiser 08.04.2011 - 12:57

3 respuestas

12

Editar

has_post_format() requiere una cadena, $format , como primer parámetro; lo que significa que solo se puede utilizar para probar tipos de post-formato explícitos:

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

Para determinar si una publicación tiene cualquier formato de publicación, use get_post_format() , que devolverá false si la publicación actual no tiene un formato de publicación asignado:

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

Tenga en cuenta que "estándar" no es un real de formato posterior, sino que es más bien un término de marcador de posición para las publicaciones que no tienen Un formato de publicación asignado. Internamente, WordPress devuelve false en lugar de post-format-standard , por lo tanto, para consultar el tipo de formato posterior "estándar", solo usaría if ( false == get_post_format() ) .

Original

has_post_format() devuelve un valor BOOLEAN, que es útil para condicionales, por ejemplo:

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

o

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

get_post_format() devuelve el valor de cadena del tipo de formato de publicación actual, que es útil de varias maneras. Uno de los más poderosos es llamar a diferentes archivos de partes de plantillas según el formato de publicación, por ejemplo:

get_template_part( 'entry', get_post_format() )

Que incluirá, por ejemplo, "entry-aside.php" para un formato aparte, o "entry.php" para un formato estándar.

    
respondido por el Chip Bennett 08.04.2011 - 18:45
4

La siguiente parte no es correcta, he creado un ticket para solicitar esta mejora.

has_post_format() es más flexible porque se basa en has_term() , que construye en is_object_in_term() . Esto significa que puede pasar una variedad de formatos de publicación y devolverá true si la publicación tiene uno de estos formatos.

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

El ticket de especificación original ya mencionado tanto get_post_format() como has_post_format() , tal vez porque se basa en el sistema de taxonomía que También tiene ambas funciones?

    
respondido por el Jan Fabry 08.04.2011 - 13:45
3

Simple, has_post_format () devuelve un valor verdadero / falso (booleano) que es útil en las declaraciones IF, mientras que get_post_format () devuelve el formato de publicación, si existe, y probablemente NULL o false si no existe. El uso de valores booleanos es una buena forma de asegurarse de que sus condiciones se comporten de la manera que esperaba y que la función has_post_format () permite condiciones breves y fáciles:

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

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

Además, esto simplemente se ajusta a otras funciones existentes de WordPress. Si bien la opción B hace las cosas, requiere un poco más de conocimiento especializado del que tal vez el usuario de WordPress ligeramente por encima del promedio esté familiarizado con.

    
respondido por el Drew Gourley 08.04.2011 - 13:30

Lea otras preguntas en las etiquetas