do_shortcode () на сторінці адміністратора


14

Я використовую кілька плагінів, у яких є короткі коди ... однак, замість того, щоб створити загальнодоступну сторінку для вмісту, я створив нові сторінки в адміністраторі за допомогою, add_menu_pageі мені потрібно знати, як їх використовувати do_shortcode()в цьому контексті.

Як є, вся функція виконує це, виплюнувши рядок. Я припускаю, що API короткого коду недоступний на сторінці адміністратора.

Як мені це обійти? Немає жодної документації, яка б пояснювала, як використовувати короткі коди в межах адміністратора WP ... або якщо це навіть можливо.


Зокрема, я намагаюся використовувати шорт-коди WooCommerce в межах адміністратора WP. Я ненавиджу той факт, що плагіни не використовують програму WP Backend для керування акаунтами та користувачами.


Хто б не прийшов і вирішив, що "я не робив жодних досліджень", і дав мені негативну оцінку, не коментуючи, вкрай корисно.
dcolumbus

1
Напевно, ви можете сказати, що шорт-коди призначені для контенту переднього кінця ... Ви намагаєтесь використовувати інший плагін для створення вмісту для вашої власної сторінки адміністратора плагіна?
Демієн

@dcolumbus Я згоден. Нещодавно я бачив кілька хибних подій, звичайно більше, ніж пам'ятаю. IMO, це чесне (і досить приголомшливе) запитання, тому я зараз беру на себе відповідь;)
TheDeadMedic

Якщо ви створили сторінку адміністратора, тоді ви можете вказати вихід - для чого вам потрібно / хочете використовувати do_shortcode(). Чи можете ви навести приклад?
Стівен Гарріс

Спеціально я намагаюся використовувати шорт-коди WooCommerce. Сторінки управління користувачами та керування обліковими записами.
dcolumbus

Відповіді:


10

Замість виклику 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().


1
Я навіть не думав про це! Потім я ніколи не використовував шорт-коди в адміністраторі (з будь-якої причини) і мав привід дослідити;)
TheDeadMedic

Я не маю поняття, чому я теж не думав про це ... Я спробую спробувати і звітувати про це!
dcolumbus

Недоліком цього є те, що воно порушиться, якщо автор плагіна в майбутньому відновить функцію зворотного виклику короткого коду. Зміни самого короткого коду будуть, ймовірно, зворотно сумісними, але менше ймовірність, що внутрішні назви функцій плагіна будуть.
Ян Данн

2

Здається шорткод API є доступний в адмінці, але його вихід буде залежати від SHORTCODE тега в питанні.

Вбудований [caption]працює як очікується, тоді як [embed]ні (це пов’язано з тим, як API вбудовування "ледаче завантажує" його короткий код, і залежить від the_contentзапуску фільтра, тому технічно не вини API короткого коду).

Висновок: Це повністю залежить від того, як і коли тег зареєстровано, і що він робить / передбачає при виконанні.

@dcolumbus Про який тег ми говоримо у вашому випадку?


1
Також деякі теги очікують get_the_ID()повернення ідентифікатора публікації.
Стівен Харріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.