Soporte » WordPress Avanzado » Mostrar campo personalizado fecha

  • Resuelto jorgedelcampo

    (@jorgedelcampo)


    Hola a todos. Estoy intentando crear una agenda de actividades que muestre la fecha del evento. Para ello he creado un campo personalizado fecha_evento y lo he insertado en el siguiente código:

    $fecha_evento = get_post_meta('fecha_evento');
    	if ($fecha_evento !="") {
    
    	$fecha = explode("-",fecha_evento('M-d'));
    } else {
    	$fecha = explode("-",get_the_date('M-d'));
    }
                          ?>
    
    <li>
              <div class="fecha-agenda"><span><strong style="text-transform:uppercase; color:white; letter-spacing: 1px;"><?php echo $fecha[0];?>

    La idea del if es que muestre fecha_evento, y si este campo estuviera vacío entonces arrojará la fecha de publicación del post.

    El problema es que solo me arroja la fecha de publicación del post e ignora el valor ingresado en fecha_evento. ¿Alguien sabe dónde está el error?
    Desde ya gracias!

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • Moderador almendron

    (@almendron)

    A if ($fecha_evento !="") le falta un «igual»: if ($fecha_evento !=="")

    Iniciador del debate jorgedelcampo

    (@jorgedelcampo)

    Gracias Almendrón, Lo que busco en confirmar que el campo fecha_evento no esté vacío. Por eso uso el operador != (diferente de). De todos modos he probado con !== (no idéntico) y tampoco funciona. :/

    Saludos y gracias.

    Moderador almendron

    (@almendron)

    Tienes razón. Es que ese operador no lo uso nunca y ya ni recordaba que existía.
    Lo que sí creo es que a get_post_meta está mal construido. Te falta indicarle el ID del post. Sería algo así como:

    get_post_meta( get_the_ID(), 'fecha_evento', true );

    get_post_meta()

    Iniciador del debate jorgedelcampo

    (@jorgedelcampo)

    Chicos, ya lo solucioné. Les dejo la explicación.

    $fecha_evento = get('fecha_evento');
    	if ($fecha_evento != "") {
    	$fecha = explode("-",get('fecha_evento'));
    	}
    	else {
    	$fecha = explode("-",get_the_date('d-M'));
    	}
                          ?>
            <li>
              <div class="fecha-agenda"><span><strong style="text-transform:uppercase; color:white; letter-spacing: 1px;"><?php echo $fecha[1];?></strong><br>
                <?php echo $fecha[0];?></span></div>

    Finalmente reemplazé la función get_post_meta() por get(). Por otro lado, tuve que descartar el argumento’d-M’. Supuse que por contener una fecha, podía usarlo en fecha_evento pero al parecer es un argumento exclusivo get_the_date y get_the_time.

    Espero que esto les ayude en el futuro. Saludos!
    Pd: echando a perder se aprende PHP 🙂

    Moderador almendron

    (@almendron)

    ¿Estás seguro que te funciona eso? «get(‘fecha_evento’)» no debería darte ningún resultado. Esto sí debería funcionar:
    $fecha_evento = get_post_meta( get_the_ID(), 'fecha_evento', true );

    Iniciador del debate jorgedelcampo

    (@jorgedelcampo)

    Tenía la misma duda que tu, pero revisando el resto de mi archivo php descubrí que otros campos personalizados también son llamados con get() por lo que simplemente repliqué el fragmento de código y funcionó perfecto.

    Por cierto, get_post_meta() forma parte del códex de WordPress, mientras que get() forma parte del protocolo de php por lo que funciona encuaquier otro cms que trabaje en php (WordPress, Drupal, etc.).

    Saludos!

    No entiendo nada.

    Opino exactamente lo mismo que @almendron. Eso de get() no debería funcionarte para obtener campos meta de posts. Si te funciona es que no estás trabajando con los campos meta, estarás trabajando con otra cosa.

    Y por cierto, get() no es una función que exista en PHP. ¿De dónde te has sacado eso? Si estoy equivocado por favor comparte el enlace en el manual de PHP para esa función, yo no lo encuentro y si intento utilizarla me generá un «Fatal error: Call to undefined function get()».

    Lo que único que se me ocurre para que ese código te funcione con meta field es que tengas algún plugin u otro código tuyo o de terceros que defina esa función.

    Por cierto, hace un tiempo publiqué un post sobre este tema, igual te interesa: Obtener posts entre fechas alamacenadas en custom fields.

    Iniciador del debate jorgedelcampo

    (@jorgedelcampo)

    Perdón chicos, retiro lo dicho de get() en php (me confundí con get y post usado en formularios).

    Estoy trabajando con una plnatilla heredada de otro sitio web. Talvez tienen razón y el get() que estoy ocupando fue definido en otro archivo. Más allá de eso, lo cierto es que get() me ha funcionado y get_post_meta() no arroja resultados.

    Saludos,

    Iniciador del debate jorgedelcampo

    (@jorgedelcampo)

    Por cierto, los campos personalizados los gestiono con el plugin Magic Fields. Pudiera ser que get() sea definido a través de ese plugin.

    Saludos,

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • El debate ‘Mostrar campo personalizado fecha’ está cerrado a nuevas respuestas.