問題描述
我不斷看到這種模式,並想知道它是什麼,WP 如何在內部使用它:
if ( empty($post) ) {
if ( isset($GLOBALS['post']) )
$_post = & $GLOBALS['post'];
else
return $null;
} elseif ( is_object($post) && empty($post->filter) ) {
_get_post_ancestors($post);
$_post = sanitize_post($post, 'raw');
wp_cache_add($post->ID, $_post, 'posts');
} else {
if ( is_object($post) )
$post_id = $post->ID;
else
$post_id = $post;
具體的問題是 is_object($post) && empty($post->filter)。我看到這個 filter 屬性與其他物件相關聯。想知道它有什麼作用以及如何使用它?
編輯
我希望能夠獲得更多的投入!不幸的是,使用”filter” 的 Google 搜尋只會導致 Filter hooks 等。這是一個很難獲得獨立資訊的功能。比埃勒?
最佳解決方案
$ post-> 過濾器包含過濾內容的上下文。上下文可能類似於”display”,表示該帖子是要顯示在頁面上的。
這是由消毒功能完成的,以便在什麼情況下表明郵政資料被消毒。不同的環境得到不同型別的消毒。例如,”raw” 是未經歸類的資料。 “display” 可能已經經歷了 esc_html 功能,或者與該上下文有關的任何內容。 sanitize_post() 功能用於檢查 pre-existing 消毒,以防止雙重逃逸等。
$ post-> 過濾器的另一個用途是在 get_sample_permalink() 功能中。你會發現它在呼叫 get_permalink() 之前設定 $post->filter = 'sample'。這裡使用”sample” 表示 get_permalink 功能,並在下面進行編碼,該呼叫的目的是建立一個示例固定連結,用於在編輯後螢幕上顯示。這將改變下面的一些功能的工作方式。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。