Jetpack是否与LOAD_TEMPLATE()冲突?

时间:2019-01-17 作者:gordie

EDIT <这个问题的标题是“是否有人知道Jetpack是否正在缓存页面/内容”,但在线程之后已更改

我刚刚更新了一个插件。除此之外,它确实使用the_content

但我注意到,一旦我将更改推到了网上,它的行为就不正常了(我的部分内容丢失了)。

一旦我禁用Jetpack,它就会按预期工作。

有人知道Jetpack是否正在缓存页面/内容,以及如何清除该缓存吗?

我没有在网上找到任何关于它的信息。

谢谢

2 个回复
SO网友:jeherve

有人知道Jetpack是否正在缓存页面/内容吗

Jetpack不会缓存帖子和页面的内容。

一旦我禁用Jetpack,它就会按预期工作。

这似乎是代码过滤方式之间的冲突the_content, 还有一个Jetpack功能使用相同过滤器的方式。我建议您停用每个Jetpack功能,一次停用一个,直到找到冲突的确切来源。然后,您可以通过以下方式联系Jetpack支持团队:this contact form 让他们知道这两个插件之间的冲突。

SO网友:gordie

我发现,由于@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;或者我应该用另一种方式来处理。我会写的。

相关推荐