如果帖子内容中只有1个短代码,请捕获id
使用此选项:
<?php
$text = get_the_content();
preg_match_all("\\bid="([0-9]+)\\b", $text, $matches);
var_dump($matches[0]);
?>
在您的示例中,它将输出:
23
但是,如果您在同一篇文章中使用其他短代码或简单文本,并使用相同的结构
id=123
, 您可能会得到意外的输出:
它将只捕获在帖子中找到的第一个输出。否则,您可以尝试以下操作(未经测试):
$post_content = get_the_content();
$start = \'[gravityform id="\';
$end = \'"\';
$post_content = \' \' . $post_content;
$ini = strpos($post_content, $start);
if ($ini === 0) return \'\';
$ini += strlen($start);
$len = strpos($post_content, $end, $ini) - $ini;
$the_id = substr($post_content, $ini, $len);
echo $the_id; // 23 in your example
但是,您必须始终使用id
作为第一个参数。