Obtener valor meta por clave meta en WordPress
Cómo obtener el valor meta por clave meta
Quiero obtener el valor por la clave meta. Esto es lo que he intentado hasta ahora:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => 'picture_upload_1'
);
$dbResult = new WP_Query($args);
var_dump($dbResult);
pero no estoy recibiendo el valor meta
Para obtener el valor meta, necesitas usar get_post_meta() después de la consulta. Aquí tienes la forma correcta:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => 'picture_upload_1'
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Obtener el valor meta
$meta_value = get_post_meta(get_the_ID(), 'picture_upload_1', true);
echo $meta_value;
}
wp_reset_postdata();
}

WP_Query
selecciona entradas y no valores de metadatos, por eso no estás obteniendo el valor.
Puedes usar el ID de la entrada devuelta para obtener el valor, algo así:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1,
'meta_key' => 'picture_upload_1'
);
$dbResult = new WP_Query($args);
global $post;
if ($dbResult->have_posts()){
$dbResult->the_post();
$value = get_post_meta($post->ID,'picture_upload_1',true);
}
Lo cual obtendrá el valor del metadato de la última entrada publicada que tenga un campo personalizado llamado picture_upload_1
Otra cosa que puedes hacer es crear una consulta manualmente, algo como:
global $wpdb;
$value = $wpdb->get_var( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s LIMIT 1" , $meta_key) );

Obtener todos los valores de meta_key en cualquier lugar:
global $wpdb;
$meta_key = 'picture_upload_1';
$data = $wpdb->get_results($wpdb->prepare( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key) , ARRAY_N );
$result = [];
foreach($data as $array){
$result[] = $array[0];
}
print_r($result);

¿Considerarías almacenar el valor en la tabla wp_options
en lugar de en wp_postmetas
?
De esta manera podrías usar get_option
con tu clave personalizada para establecer y recuperar tu valor.
https://developer.wordpress.org/reference/functions/get_option/
