do_shortcode () na stronie administratora

14

Używam kilku wtyczek, które mają skróty ... jednak zamiast tworzyć stronę publiczną dla treści, utworzyłem kilka nowych stron w ramach administratora add_menu_pagei muszę wiedzieć, jak korzystać z do_shortcode()tego w tym kontekście.

W tej chwili cała funkcja wypluwa ciąg znaków. Zakładam, że dzieje się tak, ponieważ interfejs API shortcode nie jest dostępny na stronie administratora.

Jak to obejść? Nie mogę znaleźć żadnej dokumentacji, która wyjaśniałaby, jak korzystać ze skrótów w Administratorze WP ... lub jeśli jest to możliwe.


W szczególności staram się wykorzystywać skróty WooCommerce w Administratorze WP. Nienawidzę faktu, że wtyczki nie wykorzystują zaplecza WP do zarządzania kontami / użytkownikami.

dcolumbus
źródło
Ktokolwiek przyszedł i uznał, że „nie przeprowadziłem żadnych badań” i dał mi negatywną ocenę bez komentowania, jest bardzo nieprzydatny.
dcolumbus,
1
Wydaje mi się, że można powiedzieć, że skróty dotyczą zawartości frontonu ... Czy próbujesz użyć innej wtyczki do wygenerowania zawartości dla własnej strony administratora wtyczki?
Damien,
@dcolumbus I zgadzam się. Ostatnio widziałem kilka fałszywych głosów negatywnych, z pewnością więcej niż pamiętam z przeszłości. IMO to jest szczere (i całkiem niesamowite) pytanie, więc teraz
dźgam
Jeśli utworzyłeś stronę administratora, możesz określić dane wyjściowe - dlaczego potrzebujesz / chcesz użyć do_shortcode(). Czy możesz podać przykład?
Stephen Harris
Szczególnie staram się wykorzystywać skróty WooCommerce. Strony zarządzania użytkownikami i zarządzania kontami.
dcolumbus,

Odpowiedzi:

10

Zamiast dzwonić do_shortcode()wystarczy wywołać funkcję powiązaną z krótkim kodem.

Przykład

Istnieje nazwa [example]krótkiego kodu i funkcja zarejestrowana jako moduł obsługi krótkiego kodu:

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

Na stronie administratora po prostu wywołujesz funkcję:

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

Wyjście: This works!.

Szybszy i bardziej niezawodny niż do_shortcode().

fuxia
źródło
1
Nawet o tym nie myślałem! Z drugiej strony, nigdy nie użyłem
skrótów w adminie
Nie mam pojęcia, dlaczego też o tym nie pomyślałem ... Spróbuję to zgłosić!
dcolumbus,
Jednym minusem tego jest to, że pęknie, jeśli autor wtyczki refaktoryzuje funkcję zwrotną shortcode w przyszłości. Zmiany w samym krótkim kodzie prawdopodobnie będą zgodne z poprzednimi wersjami, ale jest mniej prawdopodobne, że będą to nazwy wewnętrznych funkcji wtyczki.
Ian Dunn
2

Wygląda na to, że interfejs API shortcode jest dostępny w panelu administratora, ale jego wyniki zależą od danego znacznika shortcode.

Wbudowane [caption]działa zgodnie z oczekiwaniami, [embed]ale nie działa (jest to spowodowane tym, jak osadzony interfejs API „leniwie ładuje” swój krótki kod i zależy od the_contenturuchomionego filtra, więc technicznie nie jest to błąd interfejsu API shortcode).

Wniosek: jest całkowicie zależny od tego, jak i kiedy tag jest zarejestrowany, oraz od tego, co robi / zakłada, kiedy zostanie wykonany.

@dcolumbus O którym tagu mówimy w twoim przypadku?

TheDeadMedic
źródło
1
Ponadto niektóre tagi będą oczekiwać get_the_ID()zwrócenia identyfikatora posta.
Stephen Harris,