在函数内部回显函数

时间:2017-03-23 作者:Nate M.

我必须创建一个短代码,以便我可以将短代码粘贴到移动菜单插件的选项中,该插件不接受PHP,因此我无法执行<span class="header-cart-total"><?php echo edd_cart_total(); ?></span>

我遇到的问题是回声edd_get_cart_total() 这会导致我的网站出现白色屏幕。我必须回显它,否则购物车总金额价格不会显示为完全格式化。我如何回应它?这是我的职责。php文件:

function eddminicartfunc() {
        return 
        \'<div class="mobilemenucart">
                <i class="fa fa-shopping-cart"></i>
                <span class="header-cart-total"> \' . echo edd_get_cart_total() . \' </span>
                <span class="header-cart edd-cart-quantity">
                \' .  edd_get_cart_quantity() .\'
                </span>
        </div>\';
}
add_shortcode(\'eddminicart\', \'eddminicartfunc\');

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

echo 是一种PHP语言构造,它将值推送到输出缓冲区。它没有返回值,因此将其与字符串连接将导致echo 立即发送到输出缓冲区,以及之前的所有内容echo 组成连接的字符串。这就是滥用echo PHP本身实际上不允许这样做-如果启用了WordPress调试,您将看到类似以下的错误

分析错误:语法错误,意外的“echo”(T\\u echo)

此错误是导致您出现白色屏幕的原因-当不处于调试模式时,WordPress会抑制错误输出,以避免向最终用户公开潜在的敏感信息。

你不应该使用echo 在短代码逻辑中,WordPress对短代码的返回值进行更多处理。所以使用echo 在短代码中,很有可能会弄乱最终的标记。

包括echoedd_get_cart_total() 不会导致货币格式。我已经挖透了the plugin in question\'s source code 只是想确定一下。相反,更可能的是,某些函数连接到edd_get_cart_total 筛选以格式化模板中的输出(从而格式化在header.php 模板),但在未附加筛选器的短代码上下文中。

该插件方便地提供了ebb_cart_total() 函数,该函数将始终生成货币格式的合计字符串。函数的第一个参数是$echo 这在默认情况下为true,并将导致函数显示总计而不是返回它-如前所述,这不是您希望在短代码中执行的操作-因此将此参数设置为false 让函数返回一个字符串,您可以将该字符串与其他短代码标记连接起来。

总之:

function eddminicartfunc() {
  return 
    \'<div class="mobilemenucart">
       <i class="fa fa-shopping-cart"></i>
       <span class="header-cart-total"> \' . edd_cart_total( false ) . \' </span>
       <span class="header-cart edd-cart-quantity">\' . edd_get_cart_quantity() . \'</span>
    </div>\';
}
add_shortcode( \'eddminicart\', \'eddminicartfunc\' );

SO网友:Sam

我不确定您试图在哪里插入代码,以及它有什么限制,但请像这样尝试,看看它是否有效?

function eddminicartfunc() {

    $foo = \'<div class="mobilemenucart">
                        <i class="fa fa-shopping-cart"></i>
                        <span class="header-cart-total"> \' . echo edd_get_cart_total() . \' </span>
                        <span class="header-cart edd-cart-quantity">
                        \' .  edd_get_cart_quantity() .\'
                        </span>
                </div>\';
                return $foo;
        }
add_shortcode(\'eddminicart\', \'eddminicartfunc\');

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请