Utilizzare do_shortcode() in una Pagina di Amministrazione
Sto utilizzando alcuni plugin che includono shortcode... tuttavia, invece di creare una pagina pubblica per il contenuto, ho creato alcune nuove pagine nell'area di amministrazione usando add_menu_page
e ho bisogno di sapere come utilizzare do_shortcode()
in questo contesto.
Attualmente, la funzione si limita a restituire la stringa. Presumo che ciò accada perché l'API degli shortcode non è disponibile all'interno di una pagina di amministrazione.
Come posso risolvere questo problema? Non trovo alcuna documentazione che spieghi come utilizzare gli shortcode all'interno dell'area di amministrazione di WP... o se sia addirittura possibile.
Nello specifico, sto cercando di utilizzare gli shortcode di WooCommerce all'interno dell'area di amministrazione di WordPress. Detesto il fatto che i plugin non sfruttino il backend di WP per la gestione di account/utenti.

Invece di chiamare do_shortcode()
, chiama direttamente la funzione associata allo shortcode.
Esempio
Esiste uno shortcode chiamato [example]
e una funzione registrata come gestore dello shortcode:
function example_shortcode( $atts = array(), $content = '' )
{
extract(
shortcode_atts(
array (
'before' => '',
'after' => '',
),
$atts
)
);
return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );
Nella tua pagina di amministrazione chiama semplicemente la funzione:
echo example_shortcode(
array ( 'before' => 'Questo ', 'after' => '!' ),
'funziona'
);
Output: Questo funziona!
.
Più veloce e affidabile di do_shortcode()
.

Non ci avevo nemmeno pensato! D'altra parte, non avevo mai usato gli shortcode nell'admin (per qualsiasi motivo) e ho avuto una scusa per investigare ;)

Non ho idea del perché non ci abbia pensato nemmeno io... Proverò a farlo e farò sapere come va!

Uno svantaggio di questo approccio è che smetterà di funzionare se l'autore del plugin ristrutturerà la funzione di callback dello shortcode in futuro. I cambiamenti allo shortcode stesso saranno probabilmente retrocompatibili, ma è meno probabile che i nomi delle funzioni interne del plugin rimangano gli stessi.

Sembra che l'API degli shortcode sia disponibile nell'admin, ma il suo output dipenderà dal tag dello shortcode in questione.
Quello predefinito [caption]
funziona come previsto, mentre [embed]
no (questo è dovuto al modo in cui l'API di embed "carica in modo differito" il suo shortcode, e dipende dal filtro the_content
per essere eseguito, quindi tecnicamente non è colpa dell'API degli shortcode).
Conclusione: Dipende completamente da come e quando il tag è registrato, e cosa fa/presuppone quando viene eseguito.
@dcolumbus Di quale tag stiamo parlando nel tuo caso?
