Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

No mostrar si hay campo personalizado

Estas en el tema de No mostrar si hay campo personalizado en el foro de WordPress en Foros del Web. Saludos, tengo una duda sobre como hacer esto: Quiero, que si añado un campo personalizado a un tipo de post personalizado (post type), una parte ...
  #1 (permalink)  
Antiguo 14/02/2012, 07:00
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Exclamación No mostrar si hay campo personalizado

Saludos, tengo una duda sobre como hacer esto:

Quiero, que si añado un campo personalizado a un tipo de post personalizado (post type), una parte del apartado personalizado de la entrada individual no aparezca. He hecho este código, pero no se porque no funciona:

Código PHP:
Ver original
  1. <?php
  2. $ficha = get_post_meta($post->ID, "Ficha", true);
  3. $ficha = get_post_meta($post->ID, "Ficha", true);
  4. $imagen = get_post_meta($post->ID, "Carátula del juego", true);
  5. $altura = get_post_meta($post->ID, "Tipo de carátula", true);
  6. $score = get_post_meta($post->ID, "Puntuación final", true);
  7. $bueno = get_post_meta($post->ID, "Lo mejor", true);
  8. $malo = get_post_meta($post->ID, "Lo peor", true);
  9. $final = get_post_meta($post->ID, "Valoración final", true);
  10. $graficos = get_post_meta($post->ID, "Gráficos", true);
  11. $diversion = get_post_meta($post->ID, "Diversión", true);
  12. $duracion = get_post_meta($post->ID, "Duración", true);
  13. $dificultad = get_post_meta($post->ID, "Dificultad", true);
  14. $multijugador = get_post_meta($post->ID, "Multijugador", true);
  15. $pegi = get_post_meta($post->ID, "Pegi", true);
  16. ?>
  17.  
  18. <h2><?php the_title(); ?></h2>
  19.  
  20. <?php
  21. if( $ficha == No ) {
  22. echo "<div class="review-thumb thumbd">
  23. <div class="pegi<?php echo($pegi) ?>"></div><a href="<?php echo($imagen) ?>" title="<?php the_title(); ?>" alt="<?php the_title(); ?>"><img src="<?php echo($imagen) ?>" align="left" alt="<?php the_title(); ?>" width="160"></a>
  24. </div>
  25.  
  26.  
  27.  
  28. <div class="other-score">
  29.  
  30. <div class="score-item"> <img src="http://actualidadconsolas.com/images/<?php echo($graficos) ?>.jpg"> <span class="score-label">Gráficos:</span>
  31. <span class="score"><h2><?php echo($graficos) ?>/10</h2></span><div class="score-bg"></div></div><div class="score-item"> <img src="http://actualidadconsolas.com/images/<?php echo($diversion) ?>.jpg"> <span class="score-label">Diversión:</span> <span class="score"><h2><?php echo($diversion) ?>/10</h2></span><div class="score-bg" style="no-repeat;"></div></div><div class="score-item"> <img src="http://actualidadconsolas.com/images/<?php echo($duracion) ?>.jpg"> <span class="score-label">Duración:</span>
  32. <span class="score"><h2><?php echo($duracion) ?>/10</h2></span><div class="score-bg"></div></div><div class="score-item"> <img src="http://actualidadconsolas.com/images/<?php echo($dificultad) ?>.jpg"> <span class="score-label">Dificultad:</span>
  33. <span class="score"><h2><?php echo($dificultad) ?>/10</h2></span><div class="score-bg"></div></div><div class="score-item-final"> <img src="http://actualidadconsolas.com/images/<?php echo($multijugador) ?>.jpg"> <span class="score-label">Multijugador:</span>
  34. <span class="score"><h2><?php echo($multijugador) ?>/10</h2></span><div class="score-bg"></div></div></div>
  35. &nbsp;
  36.  
  37. <div class="despues-review"></div>
  38. &nbsp;
  39. <p>
  40. <div class="alignleft"><div class="review-score"><div class="overall-score darkred"> <span class="the-score"><?php echo($score) ?></span><span class="overall-text">Puntuaci&oacute;n</span></div></div></div>
  41. <div class="pros"><p><?php echo($bueno) ?></p></div><div class="cons"><p><?php echo($malo) ?></p></div>
  42. &nbsp;
  43. <div class="valoracion-final">
  44. &nbsp;
  45. <div class="valoracion-finaltext">
  46. <h2>Valoración final:</h2>
  47. <?php echo($final) ?></div></div>
  48. <div class="line-review"></div>";
  49. ?>


Gracias.
  #2 (permalink)  
Antiguo 14/02/2012, 07:05
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 10 años, 4 meses
Puntos: 656
Respuesta: No mostrar si hay campo personalizado

Fijate que tenés al principio $ficha dos veces.

Por otro lado, que significa $ficha == No ? Querés indicar si la variable tiene un contenido dado? No tendrías que colocarlo entre comillas?
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #3 (permalink)  
Antiguo 14/02/2012, 07:06
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

¿En la linea 21, que es "No"... un string, int, bool, array, etc.?
  #4 (permalink)  
Antiguo 14/02/2012, 11:04
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

Cita:
Iniciado por hasdpk Ver Mensaje
¿En la linea 21, que es "No"... un string, int, bool, array, etc.?
Intento que si la variable es igual a "No", que no muestre eso. Corrijo la línea:

elseif( $ficha == No ) {
  #5 (permalink)  
Antiguo 14/02/2012, 11:08
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

No digo que la línea esté mal escrita, sino la comparación No no existe poque no es de ningún tipo válido. Ahora si quieres decir el "texto No" tendrás que ponerle comillas al No, o sea:

Código PHP:
Ver original
  1. if( $ficha == "No" ) {
  #6 (permalink)  
Antiguo 14/02/2012, 11:18
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

He corregido la línea como dice hasdpk, y me sale este error.

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/actualid/public_html/wp-content/themes/GamerAC/review.php on line 60

La línea va depués del if: echo "<div class="review-thumb thumbd">...
  #7 (permalink)  
Antiguo 14/02/2012, 14:43
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

Sí exacto, tienes un fallo con las comillas, deberías de empezarla con comilla simple ' en la linea 22 y terminar también con comilla simple en la linea 48.
  #8 (permalink)  
Antiguo 15/02/2012, 07:17
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

Cita:
Iniciado por hasdpk Ver Mensaje
Sí exacto, tienes un fallo con las comillas, deberías de empezarla con comilla simple ' en la linea 22 y terminar también con comilla simple en la linea 48.
Hola, gracias por tu ayuda. Gracias a eso ya se carga la página, y todo bien, pero las funciones PHP que hay entre las '' no se activan, cómo por ejemplo ésta:
<div class="pegi<?php echo($pegi) ?>

Muchisímas gracias por tu ayuda, por lo demás está solucionado.
  #9 (permalink)  
Antiguo 15/02/2012, 08:26
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

Supongo que te lo mostrará literalmente en el wordpress las funciones.

Debes de concatenar las cadenas con las funciones con puntos, o sea:

Código PHP:
Ver original
  1. echo 'texto' . funcion($arg) . 'más texto';

También mencionarte que no hace falta que pongas <?php y ?> si está dentro de una cadena, ya que es PHP, para que lo entiendas, es como si lo estubieras llamando dos veces y eso fallará.
  #10 (permalink)  
Antiguo 15/02/2012, 11:16
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

Lo he intentado hacer, pero lo hago mal. ¿Podrías hacer la línea 23 sólo de prueba para poder hacer el resto yo?
Eres increíble, gracias.

La he hecho así ¿Que fallo?

Código PHP:
Ver original
  1. <?php
  2. if( $ficha == "No" ) { echo ""; } else {
  3. echo '<div class="review-thumb thumbd">
  4. <div class="pegi'.echo($pegi).'"></div><a href="'.echo($imagen).'" title="'.the_title();.'" alt="'.the_title();.'"><img src="'.echo($imagen).'" align="left" alt="'.the_title();.'" width="160"></a>
  5. </div>

Última edición por javierm5; 15/02/2012 a las 11:23
  #11 (permalink)  
Antiguo 18/02/2012, 05:19
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

Deberías hacerlo de la siguiente forma:

Código PHP:
Ver original
  1. echo '
  2.  
  3.     <div class="review-thumb thumbd">
  4.  
  5.         <div class="pegi '.$pegi.'">
  6.         </div>
  7.        
  8.         <a href="'.$imagen.'" title="'.the_title().'" alt="'.the_title().'">
  9.             <img src="'.$imagen.'" align="left" alt="'.the_title().'" width="160">
  10.         </a>
  11.        
  12.         [...]

Date cuenta que ya tienes un echo al principio, no hace falta que lo vuelvas a poner si está dentro de otro.
  #12 (permalink)  
Antiguo 18/02/2012, 13:35
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

Sííí, perfecto. Me has ayudado muchísimo, +karma. Creo que lo hacía mal porque las funciones de wordpress como title="'.the_title().'" la ponía con ; al final.


El único fallo que encuentro es en estos trozos del principio.

Código PHP:
Ver original
  1. title="'.the_title().'" alt="'.the_title().'

Código PHP:
Ver original
  1. alt="'.the_title().'"


Lo que pasa es que me muestra el texto escrito, no se pone en su debido campo:

Te pongo el resultado para que lo entiendas mejor:

Código PHP:
Ver original
  1. <h2>Demo de Resident Evil: Revelations</h2>
  2. Demo de Resident Evil: RevelationsDemo de Resident Evil: Revelations
  3. <div class="review-thumb thumbd"><div class="pegi16"></div>
  4. <a href="http://actualidadconsolas.com/wp-content/uploads/2011/09/resident_evil_revelations_boxart.jpg" title="" alt="">
  5. <img src="http://actualidadconsolas.com/wp-content/uploads/2011/09/resident_evil_revelations_boxart.jpg" align="left" alt="the_title" width="160">
  6. </a>
  7. </div>



Gracias
  #13 (permalink)  
Antiguo 19/02/2012, 04:11
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 7 años
Puntos: 297
Respuesta: No mostrar si hay campo personalizado

Sería mejor que pusieras una captura directa de como te lo muestra en elo navegador.

De todas formas aquí tienes como funciona the_title(): http://codex.wordpress.org/Function_Reference/the_title

Puedes probar a hacer esto a ver que te da:

Código PHP:
Ver original
  1. the_title('', '', false)

Aunque sinceramente, no creo que te funcione y te muestre el título como tu quieres.
  #14 (permalink)  
Antiguo 19/02/2012, 04:27
 
Fecha de Ingreso: abril-2011
Mensajes: 72
Antigüedad: 7 años, 3 meses
Puntos: 4
Respuesta: No mostrar si hay campo personalizado

¡Pues resulta que el código que me acabas de dar ha funcionado! No se ni cómo, pero muchas gracias. Me has ayudado muchísimo estos días.

Un saludo, espero poder ayudarte yo otro día ;)

Etiquetas: personalizado, php, post, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:22.