Shortcode content is empty

时间:2013-01-11 作者:Jamie

我在我的functions.php:

function amaranthe_buy_tickets( $atts, $content = null ) {
    extract(shortcode_atts(array(
        \'link\'  => \'#\',
        \'target\'    => \'\',
        \'variation\' => \'\',
        \'size\'  => \'\',
        \'align\' => \'\',
    ), $atts));

    $style = ($variation) ? \' \'.$variation. \'_gradient\' : \'\';
    $align = ($align) ? \' align\'.$align : \'\';
    $size = ($size == \'large\') ? \' large_button\' : \'\';
    $target = ($target == \'blank\') ? \' target="_blank"\' : \'\';

    $out = \'<a\' .$target. \' class="tickets_btn\' .$style.$size.$align. \'" href="\' .$link. \'">\' .$content. \'</a>\';

    return $out;
}
add_shortcode(\'buy-tickets\', \'amaranthe_buy_tickets\');
在要显示快捷码的模板文件中,我有以下内容:

<?php echo do_shortcode("[buy-tickets]"); ?>
在帖子中,我有这样一句话:

[buy-tickets]Tickets[/buy-tickets]
在输出中,我得到的是:

<a href="#" class="tickets_btn"></a>
由于某种原因,缺少内容。

1 个回复
最合适的回答,由SO网友:Ed Burns 整理而成

它是连字符:

在短代码名称中使用连字符时要小心。在以下情况下,WordPress可能会看到第二个开头短代码与第一个相同(基本上WordPress会看到连字符前面的第一部分):

重命名短代码,使标记没有连字符。

结束

相关推荐

如果变量中包含短码,DO_SHORTCODE()不起作用;如果短码作为字符串传递,则起作用

我正在开发一个插件,其中的一个功能是通过更改自定义字段中的快捷码来切换特定页面上的表单。在我的插件文件中:function getShort() { global $post; $m = get_post_meta($post->ID, \'short\', true); return $m; } 在我的主题文件中:$short = getShort(); echo do_shortcode($short);