使用$var作为短码属性值时出现问题

时间:2012-09-08 作者:mikkelbreum

我试图将一个变量值传递给shortcode属性。我不能让它工作。

以下是应该起作用的,还是值必须是文字?

$mycat = \'books\';
$myshortcode = \'[products category="\'.$mycat .\'"]\';

echo do_shortcode($myshortcode);
以上没有输出任何内容。如果我将其替换为

$myshortcode = \'[products category="books"]\';

echo do_shortcode($myshortcode);
然后生成预期结果。

我将此代码放置在HeadWay主题的可视化编辑器中的“自定义代码块”中。我试图找出我的问题是否与HeadWay解析自定义代码块内容的方式有关,或者是否确实不可能构造一个字符串用于do_shortcode() 像这样。

2 个回复
最合适的回答,由SO网友:mikkelbreum 整理而成

经过进一步探索,我发现问题一定出在HeadWay解析自定义代码块内容的方式上。

我仍然不能完全理解,但更改代码如下:

$mycat = \'books\';
$myshortcode = \'[products category="\'.$mycat .\'"]\';

echo do_shortcode($myshortcode);
到这个

$mycat = \'books\';
$myshortcode = \'products category="\'.$mycat .\'"\';

$myshortcode = \'[\' . $myshortcode . \']\';

echo do_shortcode($myshortcode);
让它工作。。。

SO网友:Douglas.Sesar

我只需找到shortcode所指向的函数,并直接用变量调用它。看来出错的空间会更小。

示例:

actual_products_shortcode_function($mycat);

结束

相关推荐

If else with shortcodes

如果自定义字段值为true,我只希望显示其中一个短代码。我不理解这样做的逻辑。所以基本上,如果有twitch视频和自己的3D视频,我只想显示顶部的视频(twitch)。等等等等。这是否超出了if-else语句?我正在将此代码添加到我的模板中。php文件。我的第二个问题是,使用switch方法会更好吗?<?php $twitch = get_post_meta( $post->ID, \'twitch\', $single = true ); $own3d = get_post_