Html到php var+;解析+;Wordpress->;获取摘录()

Html到php var+;解析+;Wordpress->;获取摘录(),php,html,wordpress,Php,Html,Wordpress,我想这是一个解析的问题,但在几个小时后就无法解决了。我已接近解决方案,但陷入困境,开始让我发疯 问题:我无法动态获取我的摘录(描述),因为当我将变量$my_id推入函数get_-extract()时,它似乎返回null {{data[index].选项{u id} 我已经尝试直接按如下方式推送id: <?php $product_description = get_the_excerpt(123456); ?> 你猜怎么着?它起作用了 我还尝试将$my\u id解析为(i

我想这是一个解析的问题,但在几个小时后就无法解决了。我已接近解决方案,但陷入困境,开始让我发疯

问题:我无法动态获取我的摘录(描述),因为当我将变量$my_id推入函数get_-extract()时,它似乎返回null


{{data[index].选项{u id}
我已经尝试直接按如下方式推送id:

<?php $product_description = get_the_excerpt(123456); ?> 

你猜怎么着?它起作用了

我还尝试$my\u id解析为(int)。我的gettype()将它作为int返回,但在这种情况下,我的变量返回“0”

echo$my_id正在返回正确的数字(id),因此当我将它推到变量中时,我无法理解它为什么不工作get_摘录($my_id)

有什么线索吗

干杯

编辑1:

我已经用vardump&print\r更新了我的代码以查看返回

<?php ob_start(); ?>
    {{ data[ index ].option_id }}
<?php $my_id = ob_get_clean(); ?>
<?php var_dump($my_id); ?>
<?php $product_description = get_the_excerpt( $my_id ); ?>
<?php print_r(get_the_excerpt( $my_id )); ?> <!-- return nothing */ -->
<span class="radio_button_desc"><?php echo apply_filters( 'woocommerce_composited_product_excerpt', wpautop( do_shortcode( wp_kses_post( $product_description ) ) ), $product_id, $component_id, $composite ); ?></span>

{{data[index].选项{u id}
输出:

当我通过添加$my\u id=is\u int($my\u id)将其解析为一个整数时,输出$my_id:(int)$my_id;:


这基本上是返回我实际帖子的摘录,不是动态地使用$my_id

我的想法是有额外的空格字符打断了字符串到int的转换:

get_the_excerpt( trim( $my_id ) );
或者可能:

get_the_excerpt( (int) trim( $my_id ) );
或删除输出缓冲功能之间的空格:

<?php ob_start(); ?>{{ data[ index ].option_id }}<?php $my_id = ob_get_clean(); ?>
{{data[index].选项{u id}

但是我觉得第一个更安全。

我的想法是有额外的空格字符打断了字符串到int的转换:

get_the_excerpt( trim( $my_id ) );
或者可能:

get_the_excerpt( (int) trim( $my_id ) );
或删除输出缓冲功能之间的空格:

<?php ob_start(); ?>{{ data[ index ].option_id }}<?php $my_id = ob_get_clean(); ?>
{{data[index].选项{u id}

但我觉得第一个更安全。

这里有一点学术性的东西值得注意:我们总是从ob_get_clean(或ob_get_contents)获取字符串类型的值。因为PHP是松散类型的,因此通常不会对这类事情发出噪音,它会很高兴地将字符串“1”添加到数字中

您可以执行以下任一操作

$my_id = $my_id + 0;

或者更好

$my_id = is_int($my_id) ? $my_id : (int) $my_id;

这里有一点学术性的东西值得注意:我们总是从ob_get_clean(或ob_get_contents)获取字符串类型的值。因为PHP是松散类型的,因此通常不会对这类事情发出噪音,它会很高兴地将字符串“1”添加到数字中

您可以执行以下任一操作

$my_id = $my_id + 0;

或者更好

$my_id = is_int($my_id) ? $my_id : (int) $my_id;

忘了提到我已经试过了,每当我删除这些额外的空白时,它都会给我(不是从id中动态地)我的产品摘录。所以我猜当我删除这些空格时,会返回$my_id为空,所以“获取_摘录()”。。。而且没有得到摘录($my_id);我已经更新/编辑了我的问题,并添加了一些输出截图。您的截图var_dump显示了一个45个字符的字符串,用于
string(45)“1904463”
大量空白。比较
var\u dump($my\u id)
变量转储(修剪($my_id))查看你的浏览器源代码以确认空白。好的,我做了。输出现在是字符串(29),它与:
{{data[index].option{u id}}
->29个字符相关,所以我猜这里出现了错误,看起来它没有从
{data[index].option{u id}
返回。我不明白为什么当我
echo
/
print\u r
/
var\u dump
我的号码被返回时。你看到的可能是在你的代码被另一个过滤器执行后被处理的?忘了提一下我已经尝试过了,每当我删除这些额外的空白时,它都会给我(不是动态地从id中)我的产品摘录。所以我猜当我删除这些空格时,它会将$my_id返回为空,因此“get_the_extract()”…而不是get_the_extract($my_id);我已经更新/编辑了我的问题,并添加了一些输出截图。您的屏幕截图var_dump为
string(45)“1904463”显示了一个由45个字符组成的字符串
大量的空白。将
var_dump($my_id);
var_dump(trim($my_id));
查看浏览器源代码以确认空白。好的,我这样做了。输出现在是字符串(29),与:
{data[index].option_id}
->29个字符,所以我猜这里出现了错误,看起来它没有从
{data[index].option_id}返回
。我不明白为什么当我
echo
/
print\u r
/
var\u dump
我的号码被返回时,你所看到的可能是在你的代码被另一个过滤器执行后被处理的。我已经尝试了前两个解决方案,但都不起作用。每当我解析它时,它都会给我相同的结果(不是从id动态地)我的产品的摘录。因此,当我解析为“int”时,$my_id返回我0,所以我猜因为$my_id为空,它调用“get_the_extract()”…而不是get_摘录($my_id);写入,
ob_start();the_id()$id=ob_get_clean()
不作为_id():正在返回实际帖子的ID。我已经更新/编辑了我的问题,并添加了一些输出截图。我已经尝试了前两种解决方案,但都不起作用。每当我解析它时,它都会给我(而不是从ID动态地)我的产品摘录。所以当我解析为“int”时echo$my_id返回0,所以我猜,因为$my_id为空,它调用“get_the_extract()”…而不是get_the_extract($my_id);write,
ob_start();the_id();$id=ob_get_clean();
与_id()不一样:返回实际帖子的id。我已经更新/编辑了我的问题,并添加了一些输出截图。