問題描述

目前我有三個在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。