Utilizarea do_shortcode() în cadrul unei Pagini de Administrare
Folosesc câteva plugin-uri care au shortcode-uri... însă, în loc să creez o pagină publică pentru conținut, am creat câteva pagini noi în administrare folosind add_menu_page
și trebuie să aflu cum să utilizez do_shortcode()
în acest context.
În stadiul actual, funcția doar afișează șirul de caractere. Presupun că aceasta se întâmplă deoarece API-ul pentru shortcode-uri nu este disponibil într-o pagină de administrare.
Cum pot rezolva această problemă? Nu găsesc nicio documentație care să explice cum să utilizez shortcode-uri în cadrul WP Admin... sau dacă acest lucru este chiar posibil.
Mai exact, încerc să utilizez shortcode-uri WooCommerce în cadrul WP Admin. Nu-mi place faptul că plugin-urile nu folosesc interfața de administrare WordPress pentru gestionarea conturilor/utilizatorilor.

În loc să apelezi do_shortcode()
, apelează direct funcția asociată shortcode-ului.
Exemplu
Există un shortcode numit [example]
și o funcție înregistrată ca handler pentru shortcode:
function example_shortcode( $atts = array(), $content = '' )
{
extract(
shortcode_atts(
array (
'before' => '',
'after' => '',
),
$atts
)
);
return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );
În pagina de administrare apelezi direct funcția:
echo example_shortcode(
array ( 'before' => 'This ', 'after' => '!' ),
'works'
);
Rezultat: This works!
.
Mai rapid și mai sigur decât do_shortcode()
.

Nici nu mă gândisem la asta! Pe de altă parte, nu folosisem niciodată shortcode-uri în admin (din orice motiv) și am avut o scuză să investighez ;)

Nu am nicio idee de ce nici eu nu m-am gândit la asta... O să încerc și revin cu rezultate!

Un dezavantaj al acestei abordări este că va înceta să funcționeze dacă autorul plugin-ului refactorizează funcția callback a shortcode-ului în viitor. Modificările aduse shortcode-ului în sine vor fi probabil compatibile cu versiunile anterioare, dar este mai puțin probabil ca numele funcțiilor interne ale plugin-ului să rămână aceleași.

Se pare că API-ul pentru shortcode-uri este disponibil în administrare, dar rezultatul său va depinde de tag-ul shortcode în cauză.
Shortcode-ul încorporat [caption]
funcționează conform așteptărilor, în timp ce [embed]
nu (acest lucru se datorează modului în care API-ul de embed-uri "încarcă leneș" shortcode-ul și depinde de filtrul the_content
pentru a rula, deci tehnic nu este vina API-ului de shortcode-uri).
Concluzie: Depinde în totalitate de cum și când este înregistrat tag-ul, precum și de ce face/presupune atunci când este executat.
@dcolumbus Despre care tag este vorba în cazul tău?
