Necesita ayuda para crear una declaración If para campos meta personalizados

2

Estoy usando Wordpress. Tengo un sitio web de revisión de películas llamado Filmblurb . Para las publicaciones de mi blog, estoy tratando de crear publicaciones con diferentes categorías. En la categoría "Comentarios", tengo un cuadro de "Detalles" que sirve como meta información para todos mis comentarios.

El problema es cuando intento crear una publicación que tiene la categoría de "Características" o alguna otra cosa, ese cuadro de "Detalles" aún permanece. Básicamente, quiero intentar crear una declaración PHP if que solo devolverá la siguiente secuencia de código cuando solo escribo una publicación de "Comentarios". Estoy usando la etiqueta " get_post_meta(); " en Wordpress para completar este cuadro de "Detalles" por cada publicación de "Comentarios" que escribo. Puede encontrar una publicación de muestra aquí .

<div class="box">
<div class="boxheader">Details</div>
<div class="text">
<h1>Genre</h1>
<p><?php echo get_post_meta($post->ID, 'genre', true); ?></p>
<h1>Rated</h1>
<p><?php echo get_post_meta($post->ID, 'rated', true); ?></p>
<h1>Release Date</h1>
<p><?php echo get_post_meta($post->ID, 'releasedate', true); ?></p>
<h1>Runtime</h1>
<p><?php echo get_post_meta($post->ID, 'runtime', true); ?></p>
<h1>Director</h1>
<p><?php echo get_post_meta($post->ID, 'director', true); ?></p>
<h1>Cast</h1>
<p><?php echo get_post_meta($post->ID, 'cast', true); ?></p>
<h1>Grade</h1>
<p><?php echo get_post_meta($post->ID, 'grade', true); ?></p>
</div>

Avísame si necesito explicarte más.

    
pregunta jtarr523 23.10.2011 - 00:42

1 respuesta

7

Esto se pregunta mucho, así que intentemos explicarlo completamente.

Simplemente podemos envolverlo en una declaración if y repetir el valor, por ejemplo,

   <?php if ( get_post_meta($post->ID, 'genre', true) ) : ?>
     <?php echo get_post_meta($post->ID, 'genre, true) ?> ?>
   <?php endif; ?>

Pero eso es feo, y ¿por qué hacer 2 consultas cuando puedes hacer una? Así que pondremos el valor post_meta en una variable, como $film_genre = get_post_meta($post->ID, 'genre', true; .

Esto se vería así:

$film_genre = get_post_meta($post->ID, 'genre', true);

  if ( $film_genre ) {
    echo 'something is here';
  }
  else {
    echo 'nothing is here';
  }

Además, encuentro que la función es un poco extraña en cuanto a verificar si está vacía o no, así que agrego una verificación adicional solo para asegurarme de usar !empty (esto verifica si el valor del cuadro de meta no está vacío).

Eso se parece a:

 $film_genre = get_post_meta($post->ID, 'genre', true);

  if (!empty($film_genre)) {
    echo $film_genre;
  }

Pero eso no es todo! Ya que su ejemplo usa 7 meta-cajas, solo use una función de consulta para capturarlas todas usando get_post_custom . enlace

Eso sería algo así como:

$film_meta = get_post_custom( $post->ID );
if ( $film_meta ) 
{ 
    echo $film_meta['genre'];
    echo $film_meta['rated'];
    echo $film_meta['releasedate'];
    echo $film_meta['runtime'];
    echo $film_meta['director'];
    echo $film_meta['cast'];
    echo $film_meta['grade'];
}

Ahora que es mucho mejor, puede parecer tonto hacer eco de toneladas de cosas seguidas, pero esto es solo un ejemplo, por lo general, si agrega algún margen de beneficio en los valores o quizás código adicional, la parte importante es que su única Usando una función, es limpio y fácil de leer / entender y generar.

ps. También tenga en cuenta que el tercer parámetro de get_post_meta establecido en "verdadero" no significa que el valor sea intuitivamente verdadero, sino que establece el resultado en un solo valor y no devuelve nada si está vacío.

    
respondido por el Wyck 23.10.2011 - 00:59

Lea otras preguntas en las etiquetas