do_shortcode () nella pagina di amministrazione


14

Sto usando alcuni plugin che hanno codici brevi ... tuttavia, invece di creare una pagina pubblica per il contenuto, ho creato alcune nuove pagine all'interno dell'amministratore usando add_menu_pagee ho bisogno di sapere come utilizzare do_shortcode()in questo contesto.

Così com'è, tutta la funzione fa uscire la stringa. Suppongo sia perché l'API shortcode non è disponibile all'interno di una pagina di amministrazione.

Come posso aggirare questo? Non è possibile trovare documentazione che spieghi come utilizzare gli shortcode all'interno di WP Admin ... o se è possibile.


In particolare, sto cercando di utilizzare gli shortcode WooCommerce all'interno dell'amministratore WP. Odio il fatto che i plug-in non utilizzino il back-end WP per la gestione dell'account / utente.


Chiunque sia venuto e ha deciso che "Non ho fatto alcuna ricerca" e mi ha dato un punteggio negativo senza commentare è estremamente inutile.
dcolumbus,

1
Suppongo che potresti dire che i codici brevi sono per il contenuto del front-end ... Stai cercando di utilizzare un altro plug-in per generare contenuto per la tua pagina di amministrazione del plug-in?
Damien,

@dcolumbus Concordo. Di recente ho visto alcuni falsi downvote, sicuramente più di quanto ricordi di aver visto in passato. IMO questa è una domanda onesta (e piuttosto fantastica), quindi attualmente sto
cercando di

Se hai creato una pagina di amministrazione, puoi specificare l'output - perché hai bisogno / vuoi usare do_shortcode(). Puoi fornire un esempio?
Stephen Harris,

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

Risposte:


10

Invece di chiamare do_shortcode()basta chiamare la funzione associata allo shortcode.

Esempio

Esiste un shortcode denominato [example]e una funzione registrata come gestore 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 devi solo chiamare la funzione:

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

Uscita: This works!.

Più veloce e più affidabile di do_shortcode().


1
Non ci avevo nemmeno pensato! Inoltre, non avevo mai usato codici
brevi nell'amministratore

Non ho idea del perché non ci abbia pensato neanche io ... Proverò e riporterò indietro!
dcolumbus,

Un aspetto negativo di questo è che si interromperà se l'autore del plug-in riformatta la funzione di callback dello shortcode in futuro. Le modifiche allo shortcode stesso saranno probabilmente retrocompatibili, ma è meno probabile che lo siano i nomi delle funzioni interne del plugin.
Ian Dunn,

2

Sembra che l'API shortcode sia disponibile nell'amministratore, ma il suo output dipenderà dal tag shortcode in questione.

L'integrato [caption]funziona come previsto, mentre [embed]non funziona (ciò è dovuto al modo in cui l'API di incorporamento "carica in modo pigro" il suo shortcode e dipende dal the_contentfiltro da eseguire, quindi tecnicamente non è colpa dell'API shortcode).

Conclusione: dipende interamente da come e quando il tag è registrato e da cosa fa / assume quando viene eseguito.

@dcolumbus Di quale tag stiamo parlando nel tuo caso?


1
Inoltre, alcuni tag prevedono get_the_ID()di restituire un ID post.
Stephen Harris,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.