快捷码:根据ATTS返回不同

时间:2013-08-27 作者:user1385827

pullquotes有以下短代码:

//Pullquote shortcode
function pullQuotes($atts, $content = null) {
extract(shortcode_atts(array(
    "author" => \'\'
), $atts));
return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';
}
add_shortcode("pullquote", "pullQuotes");
基本上,如果没有作者集(即:默认的“”值),我不希望返回包含$author属性的段落。

有什么想法吗?

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

你所需要的只是一些非常简单的IF 思维方式

这个$author 此处变量设置为空"author" => \'\' 除非您的快捷码中使用了作者名称。

现在您知道了$author 您可以使用IF 检查是否为空的逻辑。两个有用的逻辑运算符是== (等于)和!= (不等于)。我们可以使用任何一个操作符,但我们只需要一个。

那么首先让我们检查一下$author 为空。

if ( $author == \'\' ) {

    //do something here

}
但现在我们需要做点什么如果$author 不为空。所以我们可以添加else 符合我们的逻辑。

if ( $author == \'\' ) {

    //do something here if $author is empty

} else {

    //do something here if $author is not empty

}
将结果发送到页面的shortcode函数部分如下所示。

return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';
现在我们可以把它放在IF 思维方式

if ( $author == \'\' ) {

    return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';

} else {


    return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';

}
但是现在,shortcode函数将相同的结果返回给页面。我们需要调整第一个return 没有作者时的行。看起来像这样。

if ( $author == \'\' ) {

    return \'<blockquote>\'.$content.\'</blockquote>\';

} else {


    return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';

}
和最后的短代码。

//Pullquote shortcode
function pullQuotes($atts, $content = null) {
    extract(shortcode_atts(array(
        "author" => \'\'
    ), $atts));
    if ( $author == \'\' ) {
        return \'<blockquote>\'.$content.\'</blockquote>\';
    } else {
        return \'<blockquote>\'.$content.\'<p class="quote-author">\' . $author . \'</p>    </blockquote>\';
    }
}
add_shortcode("pullquote", "pullQuotes");

结束

相关推荐

show shortcodes in editor

有没有什么方法可以在编辑器面板中显示自定义的短代码,我已经创建了一些短代码,并认为这是一个好主意?除了关于如何创建它们的教程之外,我在网上找不到任何其他内容-我已经知道了。谢谢