我遇到了一个我似乎无法解决的问题。
我正在使用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\');
最合适的回答,由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\');
参考资料: