Как создать шорткод для печати определенных значений, хранящихся в мета-массиве post?
У меня возникли проблемы с печатью определенного значения, хранящегося в массиве post-meta в цикле WordPress, созданном построителем сетки Visual Composer, с помощью шорткода (я также попробовал пользовательское поле построителя сетки, но не смог найти НИКАКИХ примеров).
Я попытался добавить этот шорткод в functions.php :
function dmc_prezzo()
{
$postid = get_the_ID(); // get id from post in loop
$meta_data = get_post_meta($postid,'listing_options'); // select array
return $meta_data['price:value'] . ' ' . $meta_data['price:original']; // extract keys
}
add_shortcode('dmcprezzo', 'dmc_prezzo'); //usage [dmcprezzo]
Затем я добавил шорткод в текстовое поле в шаблоне сетки VC , но он ничего не выводит!
Вот мета целевого поста массив, извлеченный из сообщения с помощью плагина DPM:
listing_options: s:349:"a:8:{s:5:"price";a:2:{s:5:"value";s:5:"17300";s:8:"original";s:5:"19800";}s:17:"custom_tax_inside";s:0:"";s:15:"custom_tax_page";s:0:"";s:8:"city_mpg";a:1:{s:5:"value";s:3:"5.7";}s:11:"highway_mpg";a:1:{s:5:"value";s:3:"4.6";}s:12:"custom_badge";s:7:"Venduta";s:5:"video";s:43:"https://www.youtube.com/watch?v=IBCOAumh6aI";s:10:"short_desc";s:0:"";}";
Я вижу, что переменная, содержащая массив, называется $listing_options
, но я не знаю, как правильно установить код.
Значения, которые меня интересуют, - это цена: стоимость и цена: оригинал, найденный в начале массива:
s:349:"a:8:{s:5:"price";a:2:{s:5:"value";s:5:"17300";s:8:"original";s:5:"19800";}
Кто-нибудь может помочь, пожалуйста?
1 answers
Это выходные данные вашего массива при несериализации:
Array
(
[0] => Array
(
[price] => Array
(
[value] => 17300
[original] => 19800
)
[custom_tax_inside] =>
[custom_tax_page] =>
[city_mpg] => Array
(
[value] => 5.7
)
[highway_mpg] => Array
(
[value] => 4.6
)
[custom_badge] => Venduta
[video] => https://www.youtube.com/watch?v=IBCOAumh6aI
[short_desc] =>
)
)
Итак, чтобы получить доступ к цене, вам нужно изменить свой шорткод на этот:
function dmc_prezzo() {
$postid = get_the_ID(); // get id from post in loop
$meta_data = get_post_meta($postid,'listing_options'); // select array
return $meta_data['listing_options']['price']['value'] . ' ' . $meta_data['listing_options']['price']['original']; // extract keys
}
add_shortcode('dmcprezzo', 'dmc_prezzo'); //usage [dmcprezzo]
Было бы лучше, если бы вы опубликовали все сериализованные данные, я не уверен, что они не вложены.