问题描述

目前我有三个在 pre_get_posts 上运行的功能。我叫他们这样:

add_action( 'pre_get_posts', 'private_groups' );
add_action( 'pre_get_posts', 'search_results' );
add_action( 'pre_get_posts', 'name_profiles' );

这使我能够保持功能整齐和独立,但是调用相同的动作三次,而不是调用组合功能一次,资源流失?

最佳解决方案

我想你的意思是

add_action( 'pre_get_posts', 'private_groups' );
add_action( 'pre_get_posts', 'search_results' );
add_action( 'pre_get_posts', 'name_profiles' );

add_action( 'pre_get_posts', 'combined_into_single_callback' );

您可以使用例如 memory_get_usage()timer_stop()。许多很好的插件可以帮助你。

我会说第一个,因为他们似乎是无关的回调,可能更容易维护。

我希望主要依赖于您在那里运行的回调函数:private_groups()search_results()name_profiles()combined_into_single_callback()

钩子设置本身不应该是资源耗尽,因为它只是全局数组中的三个新的额外元素。

当使用 pre_get_posts 时,您应该注意的是仅将目标对象为对应的 WP_Query 实例,并避免为所有实例运行昂贵的代码块。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。