WP Shortcodes不返回内容

时间:2017-10-04 06:46:01

标签: php wordpress wordpress-theming themes

我正在尝试在模板文件中设置一个短代码。

我有以下设置:

作为WP页面中的内容:

[test]shortcode![/test]

在functions.php中:

function test( $atts, $content = null ) {
    return '<h1>'.$content.'</h1>';
}

add_shortcode("test", "test"); 

在上面页面的template.php中:

<?php echo do_shortcode('[test]'); ?>

虽然没有返回任何内容。如果我在template.php中调用the_post()the_content(),短代码会正确显示为h1,但这不是我想要的功能,我需要能够插入[test]特定地方的短代码。

此外,似乎我可以在函数中添加硬编码内容并显示,所以很可能$ content变量没有返回任何数据?可能导致什么?

4 个答案:

答案 0 :(得分:0)

您应该回显短代码以使其起作用:

<?php echo do_shortcode('[test]'); ?>

答案 1 :(得分:0)

参考此https://developer.wordpress.org/reference/functions/do_shortcode/

你必须简单地回显短代码

tidyverse

答案 2 :(得分:0)

您需要回显输出。当使用do_shortcode时,它将在wp中运行 - 包含一个文件shortcodes.php。触发功能时会将内容返回给调用函数。所以代码将如下所示:

 <?php echo do_shortcode('[test]'); ?>

第二件事, 你的函数参数有默认的null参数,所以如果你没有将任何内容传递给短代码,那么它就不会显示任何内容。

你需要做这样的事情

<?php echo do_shortcode('[test param="content_to_be_show"]'); ?>

或者,如果您想在开始标记和结束标记内容之间传递作为参数,您应该执行以下操作:

function my_custom_shortcode_func( $atts, $content = null ) {
   return '<p>' . $content . '</p>';
}

add_shortcode( 'my_custom_shortcode', 'my_custom_shortcode_func' );
<?php echo do_shortcode('[my_custom_shortcode]<p>Hello this is from custom shortcode contents</p>[/my_custom_shortcode]'); ?>

答案 3 :(得分:0)

由于您获得了空结果字符串,因此未在测试短代码之间指定任何内容。你需要写

var formData = new FormData()
for (var key in model)
    formData.append(key, furnizor[key])

formData.append('file', fileToUpload)

let headers = new Headers({ 'Content-Type': 'multipart/form-data' })
let options = new RequestOptions({ headers: headers })
return this.authHttp.post('/api/furnizor', formData, options).map(res => res.json())

以上代码将结果显示为<?php $strvar='Load String value here'; echo do_shortcode('[test]'.$strvar.'[/test]'); ?>

$ strvar = get_the_content();