如何在php字符串中混合php?

时间:2014-07-21 12:52:51

标签: php wordpress

我正在尝试将<?php echo do_shortcode('[...]')与Wordpress中的高级自定义字段中的字段混合。

所以基本上我要做的就是在页面编辑屏幕中为用户提供一个文本字段,她可以在其中粘贴youtube vide的ID。然后,此字段将更新我的do_shortcode以显示正确的视频。

我不确定我做错了什么,因为我之前做了好几次并且成功了。我有一种感觉,我没有正确地逃脱字符串?

<?php echo do_shortcode('[video_lightbox_youtube video_id="' . the_field("youtube_video") . '" width="640" height="480" anchor="Play Video"]'); ?>

任何人都能引导我朝着正确的方向前进吗? :)

修改

上面的代码返回q_cHD1lcEOo前面有多个空格以及:"Error! You must specify a value for the Video ID, Width, Height parameters to use this shortcode!"这就是为什么我认为我没有正确地转义它,因为这些都是指定的。

我要补充一点,如果我删除the_field("...")并将其替换为ID,则会完美显示。

第二次编辑

由于我不应该回应它,我使用了错误的功能来获得该字段。我没有使用the_field()来打印值,而是使用get_field()来简单地将其返回到字符串。

2 个答案:

答案 0 :(得分:1)

你的问题有点不清楚,但我也睡了20个小时。

无论如何,就在PHP字符串中混合PHP而言,有很多方法可以做到这一点。

您可以在字符串本身中使用连接或{}。

例如,假设我们想要回显字符串中对象的属性。

我们可以做以下

echo "This is my property " . $object->property;

或者,我们可以这样做

echo "This is my property {$object->property}";

你甚至可以做很酷的事情,比如在字符串中访问关联数组

echo "This is my property {$object->property['cool']}";

希望这会引导您前进。

答案 1 :(得分:0)

乍一看,您似乎应该使用get_field而不是the_fieldthe_field将在不提示的情况下进行打印,而get_field将返回其值,这是您想要的。

我看到你在开始时也提到过空格,你应该考虑将这个功能包装在trim中。

见下文:

<?php echo do_shortcode('[video_lightbox_youtube video_id="' . trim(get_field("youtube_video")) . '" width="640" height="480" anchor="Play Video"]'); ?>