提供基于“if”数组值的短代码输出

时间:2018-03-23 16:29:58

标签: php wordpress shortcode

我是新手在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代码中有多余。任何以示例形式提供的帮助和指导都会很棒,谢谢!

2 个答案:

答案 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语句进行比较。谢谢!