Organizar códigos cortos. ¿Cómo mostrarlos todos y sus atributos?

4

1. Mis códigos cortos

He desarrollado varios códigos cortos para mi propio tema, los estoy cargando en functions.php como este require_once (MY_URL . '/bartag_shortcode.php') .

Aquí hay un código breve de bartag ejemplar de 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. ¿Cómo listarlos a todos?

  • Ni siquiera estoy seguro de poder hacerlo, ya que add_shortcode () no permite agrupar códigos cortos, así que supongo que será bastante difícil distinguir mis códigos cortos de los demás (de complementos u otras fuentes). ¿Algunas ideas? Podría hacer un bucle a través de todos los códigos cortos que contienen archivos con foreach(glob('*.php') as $shortcode) y file_get_contents con alguna expresión regular, pero cuando se trata de rendimiento, esta es una de las ideas más tontas que se me hayan ocurrido.
  • Si eso no es posible, entonces cómo mostrar una lista de todos los códigos cortos activos, para poder filtrarlos de alguna manera (podría agregar un prefijo a los creados por mí y luego listar todos los códigos cortos que comiencen con este prefijo).

¡Gracias!

    
pregunta Wordpressor 16.03.2012 - 03:14

2 respuestas

6

Inspeccione la variable global $shortcode_tags :

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

Salida:

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 puede ver, obtiene el nombre del shortcode como clave y la función asociada como valor. Si la función es un objeto, se obtiene el objeto con sus propiedades y la función asociada como una matriz.

No veo una forma de obtener los atributos predeterminados. Tal vez por API de reflexión .

Los atributos se definen dentro de las funciones. El código abreviado registrado no sabe nada sobre el funcionamiento interno de la función asociada. Y los atributos predeterminados pueden ser ambiguos: pueden ser el resultado de otra llamada de función dentro del controlador de devolución de llamada.

    
respondido por el fuxia 16.03.2012 - 05:40
3

Eche un vistazo a Referencia de código corto , que es un complemento que proporciona una lista de todos los códigos cortos disponibles usando el API de Reflexión de PHP y eso debería darle una idea.

Además de que puede proporcionar una IU para usar sus códigos cortos, por ejemplo, saque un botín en mi complemento IU de códigos cortos Que crea un Diálogo para cada shortcode dinámicamente con los atributos necesarios.

    
respondido por el Bainternet 16.03.2012 - 08:31

Lea otras preguntas en las etiquetas