אנו משתמשים בהוק בשם pre_get_posts על מנת לבצע מודיפיקציה ללולאה הראשית ולהגדיר כי תתעלם מפוסטים דביקים. שימו לב שהפעולה הזו מסירה אותם לגמרי מהלולאה הראשית של הבלוג, ולא רק מראש הרשימה. אם תרצו להציג אותם, תאלצו לכתוב לולאה משלכם מעל הלולאה הראשית הקוראת רק לאותם פוסטים דביקים:
/**
* Snippet Name: Remove sticky posts from the main query
*/
function sv_ignore_sticky( $query ) {
if ( ! is_admin() && $query->is_home() && $query->is_main_query() ) {
$query->set( 'ignore_sticky_posts', true );
$query->set( 'post__not_in', get_option( 'sticky_posts' ) );
}
}
add_action( 'pre_get_posts', 'sv_ignore_sticky' );
התנאי מגביל את השינוי לשאילתה הראשית בעמוד הבית של הבלוג, כך שפוסטים דביקים עדיין יופיעו בווידג'טים, בלולאות מותאמות ובממשק הניהול. ignore_sticky_posts לבדו רק מונע את הקפצתם לראש הרשימה, ו-post__not_in הוא שמסיר אותם ממנה.