将html标记作为短码参数传递

时间:2014-03-12 作者:urok93

我想让我的插件的用户定义html标记,以便在通过快捷码输出的文本之前和之后使用,因此我使用参数来输入标记。但是,标记正在转换为html实体。因此,我求助于使用html\\u entity\\u decode(),这是一种好的做法吗?

    extract( shortcode_atts( array(             
            \'count\'         => -1,
            \'category_name\' => \'\',
            \'q_before\'      => \'<h3>\',
            \'q_after\'       => \'</h3>\',
            \'orderby\'       => \'date\', //\'none\',\'ID\',\'author\',\'title\',\'name\',\'date\',\'modified\',\'parent\',\'rand\',\'menu_order\'
            \'order\'         => \'ASC\', //\'DESC\'  
    ), $atts, \'myfaq\' ) );

    $q_before   = html_entity_decode( $q_before );
    $q_after    = html_entity_decode( $q_after );

2 个回复
SO网友:Bainternet

当我创建接受html标记的短代码时,我只取标记名,这意味着如果标记是<h3> 然后我要求用户输入h3 我加上<, </> 在shortcode处理程序ex中:

extract( shortcode_atts( array(
    \'count\'         => -1,
    \'category_name\' => \'\',
    \'q_tag\'         => \'h3\',
    \'orderby\'       => \'date\', //\'none\',\'ID\',\'author\',\'title\',\'name\',\'date\',\'modified\',\'parent\',\'rand\',\'menu_order\'
    \'order\'         => \'ASC\', //\'DESC\'  
), $atts, \'myfaq\' ) );

$q_before   = \'<\'.$q_tag.\'>\';
$q_after    = \'</\'.$q_tag.\'>\';
我并不是说这是最佳实践,但至少我只是要求用户提供标签名称,而不是打开和关闭标签,并且我不需要使用任何额外的转换html_entity_decode.

SO网友:Jorge Rivera

我想只要您还使用类似于th wp\\u kses函数的过滤器来验证正在传递的标记,就可以了。

extract( shortcode_atts( array(             
        \'count\'         => -1,
        \'category_name\' => \'\',
        \'q_before\'      => \'<h3>\',
        \'q_after\'       => \'</h3>\',
        \'orderby\'       => \'date\', //\'none\',\'ID\',\'author\',\'title\',\'name\',\'date\',\'modified\',\'parent\',\'rand\',\'menu_order\'
        \'order\'         => \'ASC\', //\'DESC\'  
), $atts, \'myfaq\' ) );
$allowed_tags = array(
                    \'a\' => array(
                       \'href\' => array(),
                       \'title\' => array()
                    ),
                    \'br\' => array(),
                    \'em\' => array(),
                    \'strong\' => array(),
                );
$q_before   = wp_kses(html_entity_decode( $q_before ),$allowed_tags);
$q_after    =  wp_kses(html_entity_decode( $q_after ),$allowed_tags);
这将允许用户输入多个标签,但只能输入br、em、strong和a标签,并且只能输入链接的属性href和标题

结束

相关推荐

How do I make a shortcode?

边走边学。。。我已经构建了这个功能,但我需要它作为一个短代码。我该怎么做?$args = array( \'taxonomy\' => \'product_cat\' ); $terms = get_terms(\'product_cat\', $args); $count = count($terms); $i=0; if ($count > 0) { $cape_list = \'<p class=\"my_term-archive\