$atts数组中未出现短码属性“标题”

时间:2012-08-28 作者:Force Flow

在一篇帖子中,我有以下文字:

[bhours shortcode="test" title="test"]
但“title”属性似乎被忽略了。下面是$atts属性数组的var\\u转储

array(1) {
  ["shortcode"]=>
  string(4) "test"
}
以下是PHP代码:

function bhour_shortcode_handler($atts){
    global $post,$bhourdays;

    $output=\'\';

    echo var_dump($atts);

    if(isset($atts[\'shortcode\']) && !empty($atts[\'shortcode\'])){


        if(isset($atts[\'title\']) && empty($atts[\'title\'])){
            $output.=\'\';
        }
        elseif(isset($atts[\'title\']) && !empty($atts[\'title\'])){
            $output.=\'<h3>\'.$atts[\'title\'].\'</h3>\';
        }
        else{
            //get title from post           
        }

    }


    $output.=\'<p>this is a test</p>\';

    return $output;
}

add_shortcode(\'bhours\', \'bhour_shortcode_handler\');
“title”属性是某种保留字吗?

2 个回复
最合适的回答,由SO网友:Force Flow 整理而成

我解决了这个问题。

我有一个从HTML中剥离title属性的函数,但无法区分短代码和HTML标记。

因此,我将regex转换为DOMDocument。

https://stackoverflow.com/questions/15252770/php-preg-replace-match-html-attribute

SO网友:Foxinni

您似乎没有正确提取美元ATT,或者根本没有提取美元ATT。

使用正确的过程访问已传递的属性,并将默认值设置为回退:

extract( shortcode_atts( array(
    \'shortcode\' => \'default_value\',
    \'title\' => \'Default Title\',
), $atts ) );
事实上,法典中有一条关于短码属性的广泛指导方针,http://codex.wordpress.org/Shortcode_API#Attributes

当有疑问时,只需复制WP示例并从中获取if。

结束

相关推荐

page url in shortcode

我有个问题。我正在使用自定义的快捷码来获取url。如果短代码在帖子中,那么它将获取帖子url。当我在分类列表中打开帖子时,这个帖子的快捷码工作正常。extract(shortcode_atts(array( \'gurl\' => get_permalink(), ), $atts)); 但当我尝试在小部件文本中添加此短代码时,我得到了最后一个帖子url。请告诉我,当短代码位于小部件中时,我如何获取帖子url。