组织快捷代码。如何显示所有这些元素及其属性?

时间:2012-03-16 作者:Wordpressor

1。我的短代码我为自己的主题开发了多个短代码,我正在将它们加载到函数中。像这样的phprequire_once (MY_URL . \'/bartag_shortcode.php\').

以下是WordPress Codex中的bartag短代码示例:

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

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

2。如何列出它们add_shortcode() 不允许对短代码进行分组,因此我想很难将我的短代码与其他短代码(插件或其他源代码)区分开来。有什么想法吗?我可以使用foreach(glob(\'*.php\') as $shortcode)file_get_contents 用一些正则表达式,但说到性能,这是我想到的最愚蠢的想法之一

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

检查全局变量$shortcode_tags:

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

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
        )

)
正如您所看到的,您将短代码名称作为键,将关联函数作为值。如果函数是一个对象,则可以将该对象及其属性和关联函数作为数组获取。

我看不到获得默认属性的方法。可能根据Reflection API.

属性在函数内部定义。注册的短代码不知道关联函数的任何内部工作。默认属性可能不明确:它们可能是回调处理程序内部另一个函数调用的结果。

SO网友:Bainternet

看看Shortcode Reference 它是一个插件,使用PHP的Reflection API 这应该会给你一个想法。

除此之外,您还可以提供一个用户界面来使用您的短代码,例如,在我的插件上抢夺一笔ShortCodes UI 它为每个短代码动态创建一个带有所需属性的对话框。

结束

相关推荐

Run shortcode before filters

我的用户在注释中发布代码片段。我为此创建了一个快捷码:function post_codigo($atts,$content=\"\"){ return \'<code>\'.$content.\'</code>\'; } add_shortcode(\'codigo\',\'post_codigo\'); 问题是html在打包到代码标记之前会被过滤掉。我想如果我能在过滤器之前运行短代码,那么我可以使用fun