當設定變更時執行判斷

情境:WordPress 後台有許多設定,管理者希望某個設定不要被修改,或是被修改時通知管理者。


 add_filter( 'pre_update_option_page_on_front', 'woo_page_on_front_changed', 10, 3);
 function woo_page_on_front_changed( $value, $old_value, $option ) {
	if ( $value !== 27 ) {
                 $headers = array('Content-Type: text/html; charset=UTF-8');
		wp_mail( 'admin@gmail.com', '首頁變更提醒', '首頁被變更了!', $headers );
		return 27;
	}
 }

可以使用 pre_update_option_{option_name} 這個 filter,在儲存設定之前做判斷,以上面的例子option name 是 page_on_front,這是靜態首頁的設定。我們不希望首頁被修改,所以判斷當首頁被修改時,通知管理者,並改回我們原本預設的值 (這邊是 page id)。

參考:https://developer.wordpress.org/reference/hooks/pre_update_option_option/

發佈留言