Intereting Posts
Как отображать значок при публикации нового сообщения, а затем удалять его в определенное время? Не удается найти код для ссылки «Редактировать это» в сообщениях определенной темы Повторение URL-адреса ссылки Многоязычные плагины WordPress Добавить ссылку «Ссылка» на панель инструментов Inline Специфический заказ на короткий номер продукта Woocommerce пользовательский пост с загрузкой скрипта за один пост Подсчитайте количество сообщений, которые существуют в 2 таксономиях? Как полностью отключить архив таксономии на интерфейсе? Отключить комментарии от показа публики для пользовательского типа сообщения Реализовать тестирование phpunit на плагине Комментарии по сравнению с выпуском следующей страницы Pingbacks Добавление условного выражения для работы с определенными страницами / шаблонами страниц в add_action () Пользовательский виджет, создающий исключение PHP при размещении в собственном файле PHP Странное поведение: не все сообщения WordPress

Значение Shortcode плагина в сообщении

Тема была выведена с функцией get_post_meta(get_the_ID(), 'some_value', true); когда я пытаюсь с die(print_r()); функции есть некоторый массив, содержащий значения, такие как

 [item_ticket_tailor] => Array ( [0] => [custom_event id="3106" ][custom_ticket id="3220" show_price="true"] ) 

Вопрос: Как я могу получить значение get_post_meta() с get_post_meta()

shortcode_parse_atts

Принимает строку атрибутов shortcode и возвращает ассоциативный массив пар ключ / значение.

 // UNABLE TO TEST THIS // $value = get_post_meta(get_the_ID(), 'some_value', true); // $sc = $value [ 'item_ticket_tailor' ][ 0 ]; // TEST DATA - assuming the data is a string $sc = '[custom_event id="3106" ][custom_ticket id="3220" show_price="true"]'; // pad some elements for a better parse $sc = str_replace("[", " [ ", $sc); $sc = str_replace("]", " ] ", $sc); // convert the string shortcode to an array $array = shortcode_parse_atts($sc); // the last id is the winner, so custom_event id won't show here // only custom_ticket id echo $array[ 'id' ]; // 3220 

ВАРИАНТ

 $sc = '[custom_event id="3106" ][custom_ticket id="3220" show_price="true"]'; // split up the shortcodes $sc = str_replace("]", " ", $sc); $sc = str_replace("[", "[", $sc); $shorts = array_filter(explode('[', $sc)); $custom_event_id = false; // loop through each one foreach($shorts as $short) { // get the individual attributes of the shortcode $atts = shortcode_parse_atts($short); // if the first item in the parsed array is `custom_ticket` then get the id if($atts[ 0 ] === 'custom_ticket') { $custom_event_id = $atts [ 'id' ]; break; } } echo $custom_event_id; // 3220