Organizando códigos de acesso. Como exibir todos eles e seus atributos?

4

1. Meus códigos de acesso

Eu desenvolvi vários códigos de acesso para o meu próprio tema, estou carregando-os em functions.php como este require_once (MY_URL . '/bartag_shortcode.php') .

Aqui está um shortcode bartag exemplar do WordPress Codex:

function bartag_func( $atts ) {
    extract( shortcode_atts( array(
        'foo' => 'something',
        'bar' => 'something else',
    ), $atts ) );

    return "foo = {$foo}";
}
add_shortcode( 'bartag', 'bartag_func' )

2. Como listar todos eles?

  • Eu nem tenho certeza se posso fazer isso, já que o add_shortcode () não permite agrupar códigos de acesso, então eu acho que será muito difícil distinguir meus códigos de acesso dos outros (de plugins ou outras fontes). Alguma ideia? Eu poderia percorrer todos os códigos de acesso contendo arquivos usando foreach(glob('*.php') as $shortcode) e file_get_contents com alguma regex, mas quando se trata de desempenho, essa é uma das idéias mais estúpidas que já tive.
  • Se isso não for possível, mostrarei uma lista de todos os códigos de acesso ativos para que eu possa filtrá-los de alguma forma (eu poderia adicionar um prefixo aos criados por mim e listar todos os códigos de acesso começando com esse prefixo).

Obrigado!

    
por Wordpressor 16.03.2012 / 03:14

2 respostas

6

Inspecione a variável global $shortcode_tags :

print '<pre>' . htmlspecialchars( print_r( $GLOBALS['shortcode_tags'], TRUE ) ) . '</pre>';

Saída:

Array
(
    [wp_caption] => img_caption_shortcode
    [caption] => img_caption_shortcode
    [gallery] => gallery_shortcode
    [embed] => __return_false
    [contactform] => Array
        (
            [0] => T5_Contact_Form Object
                (
                    [debug:protected] => 
                    [base_name:protected] => t5-contact-form/t5-contact-form.php
                    [prefix:protected] => t5c
                    [address:protected] => 
                    [nonce_name:protected] => t5_contact_form_nonce
                    [hidden_field:protected] => t5_no_fill
                    [option_name:protected] => t5c_default_address
                )

            [1] => shortcode
        )

)

Como você pode ver, você obtém o nome do shortcode como chave e a função associada como o valor. Se a função é um objeto, você obtém o objeto com suas propriedades e a função associada como uma matriz.

Não vejo uma maneira de obter os atributos padrão. Talvez por API de reflexão .

Os atributos são definidos dentro das funções. O shortcode registrado não sabe nada sobre o funcionamento interno da função associada. E os atributos padrão podem ser ambíguos: eles podem ser o resultado de outra chamada de função dentro do manipulador de retorno de chamada.

    
por fuxia 16.03.2012 / 05:40
3

Dê uma olhada em Shortcode Reference que é um plugin que fornece uma lista de todos os códigos de acesso disponíveis usando o A API de Reflexão do PHP e isso deve lhe dar uma idéia.

Outros, então, você pode fornecer uma interface do usuário para usar seus códigos de acesso, por exemplo, obter um loot no meu plugin ShortCodes UI Que cria um diálogo para cada shortcode dinamicamente com os atributos necessários.

    
por Bainternet 16.03.2012 / 08:31

Tags