快捷码:在弹出窗口中显示创建的快捷码列表

时间:2013-12-27 作者:freaky

我想在管理面板中创建一个弹出式快捷代码。我已经创建了快捷代码按钮和一个点击按钮弹出窗口。

我想在弹出窗口(而不是快捷键)中显示我在下拉列表中创建的所有自定义快捷键。

我真的不知道如何用这样的循环来获得我的短代码名,例如:

<tbody>
<select id="shortcode-generator-select">
<option value="raw"></option>
<?php foreach( $shortcode as $shortcode ) : ?>
<option value="<?php echo $shortcode[\'name\']; ?>"><?php echo $shortcode[\'title\']; ?>    </option>
<?php endforeach; ?>
</select>
</tbody> 
我只是想了解创建弹出式快捷代码生成器的方法。

2 个回复
SO网友:bueltge

如果您得到所有的短代码,则在全局$shortcode_tags. 您可以循环使用此短代码,并通过标记或函数进行过滤。

foreach( $shortcode_tags as $tag => $function ) {

}
如果$function 是一个数组,那么也可以读取参数。请参阅以下来源。我认为源代码比我的英语更容易理解;)

    /**
     * Get all shortocdes and his data
     * 
     * @return String
     */
    function get_shortcodes() {
            global $shortcode_tags;

            $style   = \'\';
            $output  = \'<h4>Total Shortcodes: \' . count( $shortcode_tags ) . \'</h4>\';
            $output .= \'<ol>\';
            foreach( $shortcode_tags as $tag => $function ) {

                    $style = ( \' class="alternate"\' == $style ) ? \'\' : \' class="alternate"\';

                    if ( is_string( $function ) ) {

                            $function = \'<code>\' . $function . \'</code>\';

                    } else if ( is_array( $function ) ) {

                            $object = \'\';
                            $parameters = \'\';
                            if ( is_string( $function[0] ) ) {

                                    $object = $function[0];

                            } else if ( is_object( $function[0] ) ) {

                                    $object = get_class( $function[0] );
                                    foreach ( $function[0] as $parameter => $value ) {

                                            // if the array is empty
                                            if ( empty( $value ) )
                                                    $value = __( \'The Array is empty\' );

                                            $parameters .=  \'<li><code>\' . $parameter . \'</code> => <code>\' . $value . \'</code></li>\';
                                    }

                            }

                            if ( ! empty( $parameters ) )
                                    $parameters = \'<br><strong>Parameters of class:</strong><ul>\' . $parameters . \'</ul>\';
                            $function = \'<code>\' . $object . \'::\' . $function[1] . \'</code>\' . $parameters;
                    }
                    else {
                            $function = \'empty\';
                    }


                    $output .= "<li$style><strong>Shortcode: </strong><code>$tag</code> <strong>Function: </strong>$function</li>";
            }

            $output .= \'</ol>\';

            echo $output;
    }

SO网友:Will

短代码在注册/添加时添加到全局$shortcode\\u标记数组中。因此,您可以访问它们:

global $shortcode_tags;
foreach( $shortcode_tags as $shortcode ) {
 //do something
}
数组使用快捷码标记作为键,调用的函数作为值,您可能需要找出一些方法来进一步处理它们以获得任何有意义的信息,事实上,由于您声明只想列出自己的自定义快捷码,那么无论如何,这可能是错误的方法。

结束

相关推荐

WP_Editor Shortcode Issue

我已经使用wp\\u编辑器创建了一个前端编辑器,它可以正常工作。在测试时,我注意到它正在剥离插入内容中的任何短代码。我研究了这个问题,发现正是“ob\\u”(输出缓冲)删除了它们。如果删除此输出缓冲,则短代码显示良好,但它破坏了我为编辑器创建的功能。如何保留下面使用的代码,但对其进行修改以确保显示所有短代码?非常感谢您的任何帮助/想法,S。if(!is_feed() && current_user_can( \'manage_network\' ) ) : functio