快捷码Return之后打印1

时间:2013-01-22 作者:dcolumbus

function build_total_search_method( $atts ) {

    $shorcode_php_function = include( dirname(__FILE__) . "/includes/total_search.php" );

    return $shorcode_php_function;

}
add_shortcode( \'total_search\', \'build_total_search_method\' );
我创建了一个短代码,它返回一个包含的PHP文件,而不是字符串。。。但是,在返回的语句之后1 已打印。

两个问题:

1) What is the `1` all about and how do I remove it?

2) Am I doing this properly?

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

您正在返回调用的结果include. 您希望获取包含文件的输出并返回。使用output buffering 这样做。

function build_total_search_method( $atts ) {

    ob_start();
    include( dirname(__FILE__) . "/includes/total_search.php" );
    $shorcode_php_function = ob_get_clean();

    return $shorcode_php_function;

}
add_shortcode( \'total_search\', \'build_total_search_method\' );

SO网友:Milo

你得到了1 来自您的include,表示您的include成功。如果要将值指定给变量,则包含的文件只能return 数据示例,intotal_search.php:

<?php
$some_var = \'Some content\';
return $some_var;

SO网友:Dan

include() (通常更安全include_once()) 返回是否成功。你看到了1 因为这是成功的返回值。顺便说一句,它回来了FALSE, 不0 失败时(不知道为什么)。

为了实现您想要实现的目标,@webaware的解决方案会起作用,但对于您想要实现的目标来说,一个不太全面(而且更有效的解决方案是使用file_get_contents() 像这样:

function build_total_search_method( $atts ) {
    return file_get_contents( dirname(__FILE__) . "/includes/total_search.php" );
}
add_shortcode( \'total_search\', \'build_total_search_method\' );
请注意,我还去掉了这个额外的变量,因为它从未被使用过,而且我认为有了这一额外的行,它的可读性就会降低。

结束

相关推荐

Wrap text around shortcode

我在插件中使用了一个短代码处理程序。短代码可以有不同的(可选)参数。例如,可以在静态WordPress页面上使用两个短代码,在短代码之前、之间和之后都有文本。例如: Lorem ipsum dolor sit amet, consetetur sadipscing elitr <table> <tr> <td>[shortcode option=\"1\"]</td>&#