在短码中使用Echo-卡住

时间:2017-04-16 作者:Pixxxie

经过大约3天的搜索和修补,我被卡住了。我不是一个程序员,但我喜欢尝试。

我有一个简短的代码,可以从WordPress数据库中的一个表中获取星座图(我创建了这个表)。然而,我后来发现,短代码不允许“echo”或“print”显示正确的输出。它没有出现在我放置短代码的页面上,而是出现在页面的顶部,因为短代码是在前面执行的。

我只是不知道如何将$结果输出到网页。

这是简短的代码和PHP:

function fl_aries_co_today_shortcode() {
global $wpdb;
$results = $wpdb->get_results("SELECT horoscope FROM wpaa_scope_co WHERE date = CURDATE() AND sign = \'aries\'");
foreach($results as $r) {    
echo "<p>".$r->horoscope."</p>";
}
}
add_shortcode( \'fl_aries_co_today\',\'fl_aries_co_today_shortcode\' );
Echo在短代码内不工作。如何让占星术以文本形式显示在页面上?

(我知道我可以学习使用模板页面,但短代码选项非常快速和方便。)

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

您还可以使用输出缓冲来捕获生成的所有输出。使用方法如下:

function fl_aries_co_today_shortcode() {
global $wpdb;
$results = $wpdb->get_results("SELECT horoscope FROM wpaa_scope_co WHERE date = CURDATE() AND sign = \'aries\'");
ob_start();
foreach($results as $r) {    
echo "

".$r->horoscope."

"; } $content = ob_get_contents(); ob_end_clean(); return $content; } add_shortcode( \'fl_aries_co_today\',\'fl_aries_co_today_shortcode\' );

SO网友:Johansson

您可以参考Codex 了解更多信息。使用return 要将数据输出到快捷码,请执行以下操作:

function fl_aries_co_today_shortcode() {
    global $wpdb;
    $results = $wpdb->get_results("SELECT horoscope FROM wpaa_scope_co WHERE date = CURDATE() AND sign = \'aries\'");
    $result =\'\';
    foreach($results as $r) {    
        $result .= "<p>".$r->horoscope."</p>";
    }
    return $result;
}
add_shortcode( \'fl_aries_co_today\',\'fl_aries_co_today_shortcode\' );
无论您在哪里使用快捷码,这都将返回值。

相关推荐

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

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