do_shortcode () внутри страницы администратора

Я использую несколько плагинов с короткими кодами … однако вместо создания общедоступной страницы для контента я создал несколько новых страниц в add_menu_page с помощью add_menu_page и мне нужно знать, как использовать do_shortcode() в этом контекст.

Как бы то ни было, вся функция выплевывает строку. Я предполагаю, что это потому, что API-интерфейс короткого кода недоступен на странице администратора.

Как мне обойти это? Нет документации, которую я могу найти, которая объясняет, как использовать короткие коды в WP Admin … или если это даже возможно.


В частности, я пытаюсь использовать короткие коды WooCommerce в WP Admin. Я ненавижу тот факт, что плагины не используют WP Backend для управления учетными записями / пользователями.

Solutions Collecting From Web of "do_shortcode () внутри страницы администратора"

Вместо вызова do_shortcode() просто вызовите функцию, связанную с коротким кодом.

пример

Существует короткий код с именем [example] и функция, зарегистрированная как обработчик короткого кода:

 function example_shortcode( $atts = array(), $content = '' ) { extract( shortcode_atts( array ( 'before' => '', 'after' => '', ), $atts ) ); return $before . $content . $after; } add_shortcode( 'example', 'example_shortcode' ); 

На своей странице администратора вы просто вызываете функцию:

 echo example_shortcode( array ( 'before' => 'This ', 'after' => '!' ), 'works' ); 

Результат: This works! ,

Быстрее и надежнее, чем do_shortcode() .

Кажется, что API-интерфейс shortcode доступен в admin, но его вывод будет зависеть от соответствующего тега короткого кода.

Встроенный [caption] работает так, как ожидалось, тогда как [embed] не работает (это связано с тем, как встраиваемый API «ленивый» загружает « the_content и зависит от the_content фильтра the_content , поэтому технически не ошибка API the_content ).

Вывод: он полностью зависит от того, как и когда тег зарегистрирован, и что он делает / принимает при выполнении.

@dcolumbus Какой тег мы говорим в вашем случае?