我发现,由于@jeherve的建议,在Jetpack中启用了publication connections时,就会出现这个bug。
实际上,我有一个函数the_content
并将内容附加到特定页面:
add_filter( \'the_content\',\'wpsstm_frontend_wizard_content\');
function wpsstm_frontend_wizard_content($content){
if ( !is_page(MYPAGEID) ) return $content;
ob_start();
wpsstm_locate_template( \'frontend-wizard.php\', true);
$wizard = ob_get_clean();
return $content . $wizard;
}
模板通过加载
wpsstm_locate_template()
; 调用核心函数
load_template()
:
/*
Locate a template & fallback in plugin\'s folder
*/
function wpsstm_locate_template( $template_name, $load = false, $require_once = true ) {
if ( !$located = locate_template( \'wpsstm/\' . $template_name ) ) {
// Template not found in theme\'s folder, use plugin\'s template as a fallback
$located = wpsstm()->plugin_dir . \'templates/\' . $template_name;
}
if ( $load && (\'\' != $located) ){
load_template( $located, $require_once );
}
return $located;
}
我通过设置
$require_once = false
当我调用wpsstm\\u locate\\u template()-从而加载模板()时:
wpsstm_locate_template( \'frontend-wizard.php\', true, false);
我猜Jetpack在真正显示之前“运行”了我的过滤器。因此,该文件已经加载了一次,并且在$require\\u once设置为false之前不会再次加载。
我发现了如何修复它,但无论如何,这似乎是Jetpack中的一个bug;或者我应该用另一种方式来处理。我会写的。