Как получить значение мета-поля по ключу в WordPress
Как получить значение мета-поля по мета-ключу
Я хочу получить значение по мета-ключу. Вот что я пробовал до сих пор:
$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);
но я не получаю значение мета-поля

WP_Query
выбирает записи, а не мета-значения, поэтому вы не получаете нужное значение.
Вы можете использовать возвращаемый ID записи, чтобы получить значение, например:
$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);
}
Этот код получит мета-значение последней опубликованной записи, у которой есть произвольное поле с именем picture_upload_1
.
Еще один способ — создать запрос вручную, например:
global $wpdb;
$value = $wpdb->get_var( $wpdb->prepare("SELECT meta_value FROM $wpdb->postmeta WHERE meta_key = %s LIMIT 1" , $meta_key) );

Получить все значения meta_key в любом месте:
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);

Не лучше ли сохранить значение в таблице wp_options
вместо wp_postmetas
?
В таком случае можно использовать функцию get_option
с вашим пользовательским ключом для установки и получения значения.
https://developer.wordpress.org/reference/functions/get_option/
