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.


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().


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?


1
Ponadto niektóre tagi będą oczekiwać get_the_ID()zwrócenia identyfikatora posta.
Stephen Harris,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.