我对这个短码插件有点问题。警告:非法字符串偏移量‘TITLE’

时间:2020-04-13 作者:Kevin Rubel

我有一个wordpress网站,我正在使用一个插件,该插件将shortcode用作小部件来获取最近的博客帖子。在列中,我得到一个错误,内容如下:

警告:在/home3/xxxxx/xxxxx中非法的字符串偏移量“title”。com/wp-content/plugins/recent-blogs-shortcode/recent-blogs-shortcode。php在线44

所以标题应该是博客文章的标题,但我只是在如何修复它上遇到了麻烦。

添加\\u短代码(“最近的博客”,“cp\\u侧栏\\u最近的博客\\u短代码”);

函数cp\\u提要栏\\u最近的博客\\u短代码($atts,$content=null){

// shortcode_atts will only allow us to supply 1 default; for the horizontal layout submitted with no title, use a different default
$title_default = \'\';
if ($atts[\'title\'] == \'Related Posts\' && $atts[\'layout\'] == \'horizontal\' ) {
    $title_default = \'Related Posts\';
}
else {
    $title_default = \'Recent Posts\';
}

1 个回复
SO网友:simongcc

此处的答案假设用户具备以下知识

PHP,并知道如何从PHP联机手册中找到参考shortcode_atts() - 将用户属性与已知属性相结合,并在需要时填写默认值我想你没有用正确的形式写下这个短代码。

非法字符串偏移量“title”表示$atts[“title”]不存在。它不存在,因为在调用shortcode时,title 未给出

To resolve this, you need to set default values and then combine it with user attributes(the attributes supply when anyone call the shortcode).

下面是一个推荐的短码写作风格

add_shortcode( \'recent-blogs\', \'cp_sidebar_recent_blogs_shortcode\');
function cp_sidebar_recent_blogs_shortcode( $atts, $content = null ) {

    // the following is default value + merge value from shortcode calling, 
    // it can prevent errors in case any attribute is empty such as title is not defined
    extract(shortcode_atts(array(
        \'title\' => \'\',
        \'layout\' => \'\',
    ), $attr));

    // with extract() you don\'t need to explicitly create a $title_default
    // because extract() will create $title with value \'\'

    if ( $atts[\'title\'] == \'Related Posts\' && $atts[\'layout\'] == \'horizontal\' ) {
        $title = \'Related Posts\';
    }
    else {
        $title = \'Recent Posts\';
    }

    // ... your other code continue
}

相关推荐

在主机的PHP升级后开始收到警告消息

我使用的儿童主题是2122(客户总是对的)。我最近开始在仪表板顶部和仪表板的Jetpack面板上看到以下警告机器人:“警告:在第81行的/home/leytongr/public\\u html/wp-content/plugins/theme-logo-plugin/themelogo.PHP中使用未定义的常量register\\u设置-假定“register\\u设置”(这将在PHP的未来版本中引发错误)。”这是从第80行开始的代码,您将看到我在这里提出查询的原因:function tl_init()