有关停止工作的自定义快捷代码的帮助

时间:2015-08-17 作者:user3515

不久前,我为我的网站写了一个短代码,但它最近刚刚停止工作。我想知道是否有人能帮忙。

短代码称为paramtext。它所做的是检查页面url中某个参数的值,如果满足条件,wordpress将显示短代码中的任何内容。

示例:

[paramtext param="hi" val="yes"]hello![/paramtext]
这会说“你好!”仅当url具有?hi=yes 在里面。

除了在一种情况下,短代码工作正常。也就是说,如果它在链接的href内。

示例:

<a href="http://website.com/[paramtext param="abc" val="xyz"]pagename[/paramtext]" target="_blank">link</a>
它过去只用于查找(在这种情况下,链接将是http://website.com/pagename 或者只是http://website.com), 但最近它停止了。现在,无论url中的参数是什么,它提供的链接都是http://website.com/[paramtext param=. 它没有意识到短代码实际上是一个短代码。

我尝试停用所有插件,并将主题改为214,但没有任何帮助。也许是wordpress更新杀死了它?

这是我的短代码-如果有人能建议如何修复它,我将不胜感激!

function paramtext( $atts, $content = null ) {  
extract( shortcode_atts( array(
    \'param\' => \'param\',
    \'val\' => \'val\',
    \'hide\' => false,
), $atts ) );
if ((strtolower($_GET[$param]) == strtolower($val) && $hide == false)||(strtolower($_GET[$param]) != strtolower($val) && $hide == true)){
    $return = $content;  
}else{
    $return = "";
}
return $return;
}

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

WordPress 4.2.3对短代码的工作方式进行了一些更改,以修复安全问题。请参见此处:https://make.wordpress.org/core/2015/07/23/changes-to-the-shortcode-api/

这很可能是您的问题的原因。请参阅带错误引号的短代码部分,以及附带的解决方法建议。

结束