Utilizzare do_shortcode() in una Pagina di Amministrazione

12 ago 2012, 00:26:44
Visualizzazioni: 13.6K
Voti: 15

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.

5
Commenti

Chiunque sia passato e abbia deciso che "non ho fatto alcuna ricerca" dandomi un punteggio negativo senza commentare è estremamente inutile.

dcolumbus dcolumbus
12 ago 2012 00:39:34

Immagino si possa dire che gli shortcode sono per il contenuto front end... Stai cercando di usare un altro plugin per generare contenuto per la pagina admin del tuo plugin?

Damien Damien
12 ago 2012 00:56:09

@dcolumbus Concordo. Ho visto alcuni downvote insensati recentemente, sicuramente più di quanti ne ricordi in passato. IMHO questa è una domanda onesta (e piuttosto interessante), quindi al momento sto provando a dare una risposta ;)

TheDeadMedic TheDeadMedic
12 ago 2012 01:39:05

Se hai creato una pagina di amministrazione, puoi specificare l'output - perché avresti bisogno o vorresti usare do_shortcode(). Puoi fornire un esempio?

Stephen Harris Stephen Harris
12 ago 2012 01:53:12

In particolare sto cercando di utilizzare gli shortcode di WooCommerce. Pagine di gestione utenti e gestione account.

dcolumbus dcolumbus
12 ago 2012 22:35:05
Tutte le risposte alla domanda 2
3
10

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

12 ago 2012 02:01:04
Commenti

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 ;)

TheDeadMedic TheDeadMedic
12 ago 2012 02:15:00

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

dcolumbus dcolumbus
12 ago 2012 22:35:38

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.

Ian Dunn Ian Dunn
15 set 2012 12:49:50
1

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?

12 ago 2012 01:47:59
Commenti

Inoltre, alcuni tag si aspetteranno che get_the_ID() restituisca un ID del post.

Stephen Harris Stephen Harris
12 ago 2012 01:52:09