שינוי מספר הפוסטים המופיעים בעמודי ארכיון של CPT

שינוי מספר הפוסטים בעמוד ארכיון של סוג תוכן מותאם (CPT).

על מנת לשנות את מספר הפוסטים המופיעים בעמודי הארכיון של סוג תוכן מותאם כלשהו, ניתן להשתמש בפעולה pre_get_posts שאולי אתם כבר מכירים.

כברירת מחדל, מספר הפוסטים שיופיעו הוא מה שנקבע בהגדרות המופיעות בלוח הבקרה של וורדפרס תחת הגדרות > קריאה תחת האפשרות בעמוד הראשי ובעמודי ארכיון יוצגו לכל היותר X פוסטים. אך ייתכן ותרצו שמספר זה יהיה שונה בפוסטים סטנדרטים לעומת פוסטים של סוגי תוכן מותאמים שיצרתם בעצמכם (או שנוצרו על ידי תוסף כלשהו).

הפעולה pre_get_posts מתנהגת כמעין פילטר לשאילתא הראשית שרצה בעמוד, ואם אתם מעוניינים לשנות את מספר התוצאות בשאילתא זו נכון ויעיל יותר יהיה להשתמש ב pre_get_posts מאשר ליצור שאילתא חדשה באמצעות WP_Query. הנה הקוד באמצעותו ניתן לבצע זאת:

// Display all posts on XXXXXX Archive Page
function sv_cpt_page( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_post_type_archive( 'XXXXXXX' ) ) {
        $query->set( 'posts_per_page', '-1' );
    }
}
add_action( 'pre_get_posts', 'sv_cpt_page' ); 

שימו לב כי עליכם להחליף את XXXXXX בשם בו רשמתם את אותו Custom Post Type.

במקרה זה, כל הפוסטים בעמוד הארכיון של סוג התוכן מסוג XXXXXX יופיעו מכיוון והשתמשנו ב  1- עבור הפרמטר posts_per_page. באפשרותכם כמובן לשנותו לאיזה מספר שתרצו.

באותה מידה, אם תרצו לבצע זאת עבור טקסונומיה מסויימת, ניתן לבצע זאת בצורה הבאה:

// Display all posts on XXXXXX tax Page
function sv_tax_page( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_tax('project_category') ) {
        $query->set( 'posts_per_page', '-1' );
    }
}
add_action( 'pre_get_posts', 'sv_tax_page' );

בשני המצבים השימוש ב !is_admin נעשה בכדי לא להשפיע על ממשק הניהול של וורדפרס. השימוש ב $query->is_main_query מוודא כי אף שאילתא אחרת לא תושפע מהגדרה זו.

באפשרותכם להשתמש בדרך זה על מנת לשנות פרמטרים נוספים עבור אותה שאילתא והנה מספר דוגמאות:

$query->set( 'orderby', 'title' );
$query->set( 'order', 'DSC' );
$query->set( 'post__not_in', array(7,11) ); // Exclude Posts
$query->set( 'cat', '-1,-1257' ); // Exclude Categories
$query->set( 'cat', '153' ); // Include Categories

אתם מוזמנים לראות את הערכים השונים עבור פרמטרים אלו ב Codex.

 

רועי יוסף
רועי יוסף

מפתח וורדפרס, מאמין ביצירת הזדמנויות לעסקים קטנים, סטארטאפים נועזים ואנשים עצמאים לשנות את העולם. אוהב טיפוגרפיה, צבעים וכל מה שבינהם ומכוון לספק אתרי וורדפרס עם ביצועים גבוהים, תמיכה בכל הדפדפנים, בעלי קוד ולידי, סמנטי ונקי.

0תגובות...

השאירו תגובה

פעימות
Up!