将变量转换为在短码中设置的值

时间:2019-03-17 作者:SLembas

我在WordPress上有一个网站,首先我有一个PHP短代码,它可以帮助我在WP post editor中创建可自定义的链接,而无需将CSS文件转换为具有基本相同参数的类的转储。

function custom_link($atts, $custom_title)
    {
    $url = $atts[url];
    $color = $atts[color];
    $icon = $atts[icon];
    return \'<a class="button-round custom-link" style="background-color: #\' . $color . \' !important" href="\' . $url . \'" target="_blank">\' . $icon . \'<span>\' . $custom_title . \'</span></a>\';
    }

add_shortcode(\'custom-link\', \'custom_link\');
它让我可以定制$url, 按钮的背景色$color 和图标$icon. 结果应该是这样的,例如:

enter image description here

问题在于$icon. 基本上,我有一个单独的PHP文件,其中充满了变量,并为它们设置了令人尊敬的SVG图标代码,例如,让我们来获取其中一个,$icon_paypal. 我想要$icon 变量的值icon 的属性custom-link 我设置:

[custom-link url="/someurl" color="#092F87" icon="paypal_icon"]Donate[/custom-link]
因此,在此之后,回报应如下所示:

<a class="button-round custom-link" style="background-color: #\' . $color . \' !important" href="\' . $url . \'" target="_blank">\' . $icon_paypal . \'<span>\' . $custom_title . \'</span></a>
。。。然后执行为正确的HTML代码。

我是PHP的初学者,希望我能尽可能详尽地解释我的问题。

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

我希望$icon变量成为我设置的自定义链接的icon属性值:

如果我没弄错你的问题这就是你想要的,

function custom_link($atts, $custom_title)
    {
    include "PATH_TO_YOUR_PHP_FILE_CONTAINING_ICON_VARS";
    $url = $atts[\'url\'];
    $color = $atts[\'color\'];
    $icon = $atts[\'icon\'];
    $icon = $$icon; // $$icon is $icon_paypal 
        return \'<a class="button-round custom-link" style="background-color: \' . $color . \' !important;" href="\' . $url . \'" target="_blank">\' . $icon . \'<span>\' . $custom_title . \'</span></a>\';

    }

add_shortcode(\'custom-link\', \'custom_link\');
所以是一个短代码

[custom-link url="/someurl" color="#092F87" icon="icon_paypal"]Donate[/custom-link]
将生成

<a class="button-round custom-link" style="background-color: \' . $color . \' !important" href="\' . $url . \'" target="_blank">\' . $icon_paypal . \'<span>\' . $custom_title . \'</span></a>

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }