将PHP变量传递给短代码

时间:2018-06-17 16:58:49

标签: php wordpress variables shortcode

我正在尝试做一些看似非常简单的事情,但我无法理解。

在我的类别模板中,我有这个短代码:

<?php echo do_shortcode( '[jobs categories="manufacturing"]' ); ?>

我也有这个来显示该类别的标题:

<?php single_cat_title(); ?>

我想将它们放在一起,这样我就可以将类别传递给短代码,以便获取正确的工作类别列表。所以我创造了这个:

<?php $category = single_cat_title(); ?>
<?php echo do_shortcode('[jobs categories=' . $category . ']'); ?>

但似乎没有正常工作 - 我做错了吗?这甚至可能吗?

非常感谢!!

1 个答案:

答案 0 :(得分:2)

如果您查看single_cat_title()函数的文档,您会看到它可以displayreturn值,并且它接受两个参数$prefix$display的默认值分别为''true

这意味着,只是使用single_cat_title();将Category Title打印到文档。

如果要将其用作变量(不将其打印到文档中),则需要将第二个参数设置为false

$category = single_cat_title( '', false );

这将为您定义$category变量,而不打印任何内容,然后您可以将其传递给您的短代码(另请注意,通常您需要在短代码中围绕属性值引用):

echo do_shortcode( '[jobs categories="' . $category . '"]' );

你可以使它更简洁:

<?php
    $category = single_cat_title( '', false );
    echo do_shortcode( "[jobs categories='$category']" );
?>