我在插件中创建了一个短代码,并在一些页面中使用了它。现在我必须在包含短代码的帖子上获取这些短代码的属性。
示例短代码是[图书id=“432”]。当我将这个短代码写入帖子或小部件时,我必须得到这个432值。
我看到此函数是为了从短代码字符串中获取属性:
function get_shortcode_atts( $tag, $text ){
preg_match_all( \'/\' . get_shortcode_regex() . \'/s\', $text, $matches );
$out = array();
if( isset( $matches[2] ) )
{
foreach( (array) $matches[2] as $key => $value )
{
if( $tag === $value )
$out[] = shortcode_parse_atts( $matches[3][$key] );
}
}
return $out;
}
没关系。但在此之前,我应该做什么
detect a shortcode and get it 从post或i小部件?
有一个名为has_shortcode
但我认为这对于我的目的是不够的。
最合适的回答,由SO网友:Matt 整理而成
我不太清楚你到底想做什么。每页是否有多个短代码?需要获取图书id时,您是否在页面上?
如果您所在的页面上有短代码,则此函数将返回一个图书id数组:
function book_id() {
return preg_match_all( \'/(?<=\\[book id=").+?(?="])/\', get_post()->post_content, $match )[0];
}
如果发布内容为
[book id="432"][book id="434"]
这将返回:
array(2) {
[0]=>
string(3) "432"
[1]=>
string(3) "434"
}
如果每页只有一个图书id,则可以使用
preg_match
而不是
preg_match_all
上面的函数将返回字符串而不是数组。