我是新手在WordPress中构建短代码,所以我确信这是一个很简单的答案,可能与我的语法有关。我想要做的是根据管理员想要跟踪的内容插入动态跟踪号码。
[phone tracking="WHATEVER"]WHATEVER PHONE NUMBER[/phone]
在我的第一次迭代中,我将这样做:
[phone tracking="general"]561-444-4440[/phone]
这是我的functions.php文件中的自定义短代码,它有点工作 - 它现在正在输出4255209号码。
// Dynamic tracking number shortcode
function dynamic_tracking_phone_number( $atts , $content = null ) {
// Map the dynamic numbers as attributes here [phone tracking="general"]561-444-4440[/phone]
$args = shortcode_atts(
array(
'tracking' => '',
), $atts);
$general = '4255209';
$homepage = '6015036';
if ( empty ( $args['tracking'])) {
return 'Please specify tracking attribute'; }
if ($args['tracking'] = 'general') {
$out = '<a href="tel:+1561' . $general . '" target="_blank" /> '. $content .'</a>';}
elseif ($args['tracking'] = 'homepage') {
$out = '<a href="tel:+1561' . $homepage . '" target="_blank" /> '. $content .'</a>';}
return html_entity_decode($out);
} add_shortcode( 'phone', 'dynamic_tracking_phone_number' );
前端输出:
<a href="tel:+15614255209" target="_blank">561-444-4440</a>
但是当我在短代码中测试属性为tracking =“homepage”时,它仍会输出4255209.此外,我确信我的$ out代码中有多余。任何以示例形式提供的帮助和指导都会很棒,谢谢!
答案 0 :(得分:0)
您需要使用==
来检查两件事是否相等。单=
不用于比较,它仅用于分配。与x = 5
一样,它将值5分配给变量x
。当您说if ($args['tracking'] = 'general')
时,您需要将值'general'
分配给$args['tracking']
。
因此,修复程序的主要部分是纠正这两行:
if ($args['tracking'] = 'general')
和
elseif ($args['tracking'] = 'homepage')
即,将=
更改为==
。
我对你如何使用$args
变量有点不清楚。在我看来,如果你想访问'tracking'
,那么你需要做
$args[0]['tracking']
而不是
$args['tracking']
但就像我说的那样,我不清楚。那种语言看起来像PHP,但也许不是。祝你好运。
答案 1 :(得分:0)
答案是@GreatBigBore提供的“=”和“==”之间的区别,它将用户提供的属性变量与IF语句进行比较。谢谢!