do_shortcode () na Página do administrador

14

Estou usando alguns plug-ins que possuem códigos de acesso ... no entanto, em vez de criar uma página pública para o conteúdo, criei algumas novas páginas no administrador usando add_menu_pagee preciso saber como utilizar do_shortcode()esse contexto.

Tal como está, toda a função faz cuspir a string. Suponho que seja porque a API de código curto não está disponível em uma página de administrador.

Como contornar isso? Não existe documentação que explique como utilizar códigos de acesso dentro do WP Admin ... ou se é possível.


Especificamente, estou tentando utilizar os códigos de acesso do WooCommerce no WP Admin. Eu odeio o fato de que os plug-ins não utilizam o WP Backend para gerenciamento de contas / usuários.

dcolumbus
fonte
Quem veio e decidiu que "eu não fiz nenhuma pesquisa" e me deu uma pontuação negativa sem comentar é extremamente inútil.
precisa saber é o seguinte
1
Eu acho que você poderia dizer que códigos de acesso são para conteúdo de front-end ... Você está tentando usar outro plug-in para gerar conteúdo para sua própria página de administração de plug-ins?
Damien
@dcolumbus Concordo. Vi alguns votos espúrios recentemente, certamente mais do que me lembro de ter visto no passado. IMO esta é uma pergunta honesta (e muito legal), por isso estou actualmente a tomar uma facada em uma resposta;)
TheDeadMedic
Se você criou uma página de administrador, pode especificar a saída - por que precisa / deseja usar do_shortcode(). você pode dar um exemplo?
Stephen Harris
Especialmente, estou tentando utilizar os códigos de acesso do WooCommerce. Páginas de gerenciamento de usuários e gerenciamento de contas.
dcolumbus

Respostas:

10

Em vez de chamar, do_shortcode()basta chamar a função associada ao código abreviado.

Exemplo

Há um código de acesso nomeado [example]e uma função registrada como manipulador de código de acesso:

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

Na sua página de administração, basta chamar a função:

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

Saída: This works!.

Mais rápido e confiável do que do_shortcode().

fuxia
fonte
1
Eu nem tinha pensado nisso! Então, novamente, eu nunca tinha usado códigos de acesso na administração (por qualquer motivo) e tinha uma desculpa para investigar;)
TheDeadMedic
Também não sei por que não pensei nisso ... Vou tentar e relatar!
dcolumbus
Uma desvantagem disso é que ele será interrompido se o autor do plugin refatorar a função de retorno de chamada do shortcode no futuro. Alterações no próprio código de acesso provavelmente serão compatíveis com versões anteriores, mas é menos provável que os nomes das funções internas do plugin sejam.
Ian Dunn
2

Parece que a API shortcode está disponível no administrador, mas sua saída dependerá da tag shortcode em questão.

O built-in [caption]funciona como esperado, enquanto [embed]não funciona (isso ocorre devido à forma como a API incorporada "carrega preguiçosamente" seu código de acesso e depende do the_contentfiltro para ser executado, portanto tecnicamente não é culpa da API de código de acesso).

Conclusão: É totalmente dependente de como e quando a tag é registrada e o que ela faz / assume quando executada.

@dcolumbus De que tag estamos falando no seu caso?

TheDeadMedic
fonte
1
Além disso, algumas tags esperam get_the_ID()retornar um ID da postagem.
Stephen Harris