将 PHP 变量传递给简码

Pass PHP Variable into a shortcode

我正在尝试做一些看起来很简单但我想不通的事情。

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

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

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

<?php single_cat_title(); ?>

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

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

但它似乎无法正常工作 - 我做错了什么吗?这可能吗?

非常感谢!!

如果您查看 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']" );
?>