虽然if ($current_tld === $atts["country"])
当一切都很完美时,check将为您完成这项工作,当您的短代码插入错误或不完整时,它可能会产生错误。
例如,检查以下两种情况:
// misspelled contry attribute
[ifurl contry="com"] Show only if .com [/ifurl]
// incomplete shortcode with no country attribute
[ifurl] Show only if .com [/ifurl]
在这两种情况下,WordPress都会调用您的shortcode函数,但您的shortcode函数会产生错误或意外的结果,因为您没有处理这些问题。
修复代码的一种方法是isset( $atts["country"] )
检查,如下所示:
if ( isset( $atts["country"] ) && $current_tld === $atts["country"] )
然而,更好的方法是首先声明默认属性,然后再使用
shortcode_atts
作用例如,改进后的代码可能如下所示:
add_shortcode( \'ifurl\', \'ifurl\' );
function ifurl( $atts, $content = "" ) {
$atts = shortcode_atts(
array(
\'country\' => \'com\'
), $atts, \'ifurl\' );
$url = \'https://\' . $_SERVER[\'SERVER_NAME\'];
$current_tld = end( explode( ".", parse_url( $url, PHP_URL_HOST ) ) );
if( $current_tld === $atts[\'country\'] ) {
return $content;
}
return "";
}
使用此代码,我们可以
.com
默认为site,因此以下示例中给出的shortcode将在上给出输出
.com
站点,但不在上
.co.uk
地点:
[ifurl] Show only if .com [/ifurl]
更重要的是,它不会抛出任何错误。
此外,通过这种方式,您可以打开窗口来增强短代码属性,以便其他插件使用名为shortcode_atts_{$shortcode_name}
(在你的情况下shortcode_atts_ifurl
).
如果您想开发插件,并且希望其他开发人员能够轻松地增强您的插件,而不必直接修改它,那么这非常有用。