問題描述
所以有以下情況。
我添加一個操作來清除數據庫中的日誌:
add_action( 'myplugin_clean_logs', array( 'MyPlugin_Logs', 'clean_logs' ) );
現在我想定期運行這個動作:
wp_schedule_event( current_time( 'timestamp' ), 'daily', 'myplugin_clean_logs' );
並手動執行:
do_action( 'myplugin_clean_logs' );
方法 MyPlugin_Logs::clean_logs 返回受影響的行的計數,如果有其他方向,則返回 false 。
現在我想顯示已刪除的行數。我會想像這樣的事情:
$affected_rows = do_action( 'myplugin_clean_logs' );
echo $affected_rows . ' entries have been deleted.';
但是,由於 do_action 不會返回任何值,我不知道如何獲取返回值。
我應該在手動運行中直接執行該方法,但是對計劃事件使用該操作?
最佳解決方案
一件很酷的事情是一個過濾器與一個動作相同,只有它返回一個值,所以只需將它設置為一個過濾器:
add_filter( 'myplugin_clean_logs', array( 'MyPlugin_Logs', 'clean_logs' ) );
然後像:
$affected_rows = '';
$affected_rows = apply_filters( 'myplugin_clean_logs', $affected_rows );
應通過 $affected_rows 到 clean_logs()(以及您可能掛鈎到 myplugin_clean_logs 的任何其他功能),並將返回值分配給 $affected_rows 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。