僅針對主要的 WordPress 迴圈

WordPress 正在將 pre_get_posts 過濾器應用於它生成的任何迴圈。這意味著我們在回撥函式中進行的所有更改都將應用於所有退出迴圈。

顯然,在大多數情況下,它不是我們想要的。

在大多數情況下,我們只想定位 主迴圈 ,僅適用於非管理員螢幕。

我們可以使用 is_main_query() 方法和 is_admin() 全域性函式來檢查我們是否在正確的位置。

add_action( 'pre_get_posts', 'my_callback_function' );

function my_callback_function( $query ) {
    if( !$query->is_main_query() || is_admin() ) return;

    // this code will run only if
    // - this query is main query
    // - and this is not admin screen
}