Verificar si existe un campo personalizado específico

4 jul 2011, 01:37:04
Vistas: 18.7K
Votos: 2

¿Es posible verificar si existe un campo personalizado para una entrada dada dentro del loop? Por ejemplo, estoy usando funciones como get_post_meta($post->ID, 'Company', true); precedidas por una etiqueta <h4>, pero me gustaría verificar primero que exista un valor para el campo personalizado "Company" antes de escribir el <h4>. ¿Es esto posible?

1
Comentarios

Me encanta cómo preguntas hechas hace 11 años pueden seguir siendo tan relevantes.

Lisa Lisa
14 jul 2022 02:03:02
Todas las respuestas a la pregunta 1
8

Los métodos get_ de WP están diseñados para recuperar datos, no para mostrarlos. Puedes verificar fácilmente la variable - que contiene los datos - antes de agregar tus etiquetas head:

$my_post_meta = get_post_meta($post->ID, 'Company', true);
if ( ! empty ( $my_post_meta ) )
    echo '<h4>'.$my_post_meta.'</h4>';
4 jul 2011 05:07:43
Comentarios

No, solo verifica si el valor está vacío.

T.Todua T.Todua
26 feb 2017 00:55:27

@T.Todua El OP preguntó (en el año 2011): "[…] me gustaría verificar para asegurarme de que hay un valor para el campo personalizado […]", así que verificar si hay un valor está bien. Además, get_post_meta() es un simple envoltorio para get_metadata(), que devuelve una cadena vacía '' o un array() vacío si el valor no está presente. ¿Puedes aclarar tu declaración o necesitas ayuda?

kaiser kaiser
26 feb 2017 01:18:01

Quería hacer una nota al lector, solo eso, nada más...

pero el título de la pregunta lo dice (no he leído todo el tema, solo el título), que preguntaba sobre un problema específico, y la respuesta no es 100% solución al problema que yo tenía (exactamente como la pregunta). Sin embargo, tal vez fue satisfactoria para el OP.

T.Todua T.Todua
26 feb 2017 19:42:22

@T.Todua Entonces tienes que aclarar qué quieres decir con "existe". Como puedes leer en la respuesta y también en el enlace que te proporcioné en el comentario anterior, get_metadata() es suficiente para verificar si el valor existe en la base de datos.

kaiser kaiser
26 feb 2017 20:09:49

sí, get_metadata es algo diferente... p.d.: ¡nunca he votado negativamente tu respuesta, solo fue mi observación que te llevó a hacer un comentario mejor! gracias

T.Todua T.Todua
26 feb 2017 20:26:47

@T.Todua No hay votos negativos en la respuesta :) De todos modos, get_metadata() en realidad es lo mismo que get_post_meta(). Este último es simplemente un "wrapper" simplificado y internamente llama a get_metadata(). Por cierto, ¿te importaría si edito tu comentario y elimino la interminable cantidad de signos de exclamación y el formato en negrita?

kaiser kaiser
26 feb 2017 21:10:33

no, elimínalo, como desees... No he mirado get_metadata(). No sé si me entiendes, a lo que me refiero... si existe una clave, pero su valor está vacío, entonces tu función traduciría eso como "meta no existe"... sin embargo, quería una función simple que solo me diga si ese meta existe siquiera.

T.Todua T.Todua
26 feb 2017 23:08:10

Bueno, si quieres el valor crudo, entonces puedes usar $id_list = [ /* tus IDs */ ]; $wpdb->get_results( "SELECT $column, meta_key, meta_value FROM $table WHERE ".sanitize_key('post_id')." IN ($id_list) ORDER BY meta_id ASC", ARRAY_A );. De lo contrario, el núcleo de WordPress siempre devolverá un array vacío o una cadena vacía, dependiendo de si pediste un solo valor o todos los valores a través del argumento de las funciones.

kaiser kaiser
26 feb 2017 23:16:41
Mostrar los 3 comentarios restantes