Php WordPress:从内容字段获取所有短代码

Php WordPress:从内容字段获取所有短代码,php,wordpress,shortcode,wordpress-shortcode,Php,Wordpress,Shortcode,Wordpress Shortcode,我正在使用一个自定义短代码在我的内容中显示一个引导模式。问题是,会破坏内容。请看这里: 我想更改短代码,只显示模式的链接,并在内容后显示模式- 为此,我检查内容字段是否有短代码,如果是这样,我会在内容之后显示所有模态 下面是代码: (此处部分:) 我需要内容中每个短代码的id,并将它们存储在“$str”变量中。使用preg\u match()函数的此方法应该可以工作: $id = 0; $matches = array(); preg_match('#\[term(.*) id="([0-9]{

我正在使用一个自定义短代码在我的内容中显示一个引导模式。问题是,
会破坏内容。请看这里:

我想更改短代码,只显示模式的链接,并在内容后显示模式-

为此,我检查内容字段是否有短代码,如果是这样,我会在内容之后显示所有模态

下面是代码: (此处部分:)


我需要内容中每个短代码的id,并将它们存储在“$str”变量中。

使用
preg\u match()函数的此方法应该可以工作:

$id = 0;
$matches = array();
preg_match('#\[term(.*) id="([0-9]{1,})"(.*)\]#', $content, $matches);
if (count($matches) > 2) {
    $id = $matches[2];
}

无论快捷码属性的顺序如何,它都会起作用,但它假定
id
属性值周围有双引号,并且该值仅由数字组成。

对于
$id
,您会得到
0
?如果是这样,您确定
$content
包含快捷码吗?我必须像这样使用自定义字段:
get\u sub\u字段(“textfield”,false,false)否则短代码不作为代码出现在内容中。现在它起作用了。谢谢
[term value="Custom Link Title" id="123"]
$id = 0;
$matches = array();
preg_match('#\[term(.*) id="([0-9]{1,})"(.*)\]#', $content, $matches);
if (count($matches) > 2) {
    $id = $matches[2];
}