内容之前和之后-使用REQUIRED_ONCE时,内容紧跟在内容之前

时间:2019-08-01 作者:CongoDeuce

我遇到了一个我似乎无法解决的问题。

我正在使用require\\u once在主页上的页面内容前后放置内容。before内容工作正常,显示良好。如果我使用文本作为after内容,例如$aftercontent:“这是我的文本”;

但是,如果我尝试再次调用require\\u once,则after内容位于before内容的正下方,在$内容之前。代码如下。

// -----------------------------------------
// HOMEPAGE HERO & FOOTER CALL

function wpdev_before_after($content) {
    if ( is_user_logged_in() && is_front_page() ) {
        $beforecontent = require_once ( WP_CONTENT_DIR . \'/themes/moon-child/includes/hero-registered-include.php\' );
        $aftercontent = require_once ( WP_CONTENT_DIR . \'/themes/moon-child/includes/footer-registered-include.php\' );
        $fullcontent = $beforecontent . $content . $aftercontent;
    } else {
        $beforecontent = require_once ( WP_CONTENT_DIR . \'/themes/moon-child/includes/hero-unregistered-include.php\' );
        $aftercontent = require_once ( WP_CONTENT_DIR . \'/themes/moon-child/includes/footer-unregistered-include.php\' );
        $fullcontent = $beforecontent . $content . $aftercontent;
    }

    return $fullcontent;
}
add_filter(\'the_content\', \'wpdev_before_after\');

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

如果要附加的文件(例如。footer-registered-include.php) 打印/显示一些文本,此文本将在您包含文件时显示。

要将包含文件显示的内容分配给变量,您应该:

打开输出缓冲,包括输出缓冲区的文件内容和结束输出缓冲

function wpdev_before_after($content)
{
    if ( is_user_logged_in() && is_front_page() )
    {
        ob_start();
        require_once( get_stylesheet_directory() . \'/includes/hero-registered-include.php\' );
        $beforecontent = ob_get_contents();
        ob_clean();
        // -- OR --
        // $beforecontent = ob_get_clean();
        // ob_start();

        include_once( get_stylesheet_directory() . \'/includes/footer-registered-include.php\' );
        $aftercontent = ob_get_clean();

        $fullcontent = $beforecontent . $content . $aftercontent;
    }
    // else {
    // ...
    // }
    return $fullcontent;
}
add_filter(\'the_content\', \'wpdev_before_after\');
参考资料: