דף הבית » טריקים וטיפים, מומלצים

לבחור אילו סוגי תכנים יוצגו בעמודים מסויימים

8 בספטמבר 2010 | מאת רמי | 4 תגובות | תגיות: , , , , ,

בגרסה 3.0 של וורדפרס התווספה האפשרות להוסיף סוגי תכנים נוספים על פוסטים ועמודים – קוראים להם Custom Post Types – סוגי תכנים מותאמים אישית. וורדפרס מאפשר ליצור תכנים מסוגים חדשים כמו "מאמרים", "מתכונים", "בדיחות", "מוצרים", "חדשות", "שירים" וכו. אין לבלבל בין סוגי תכנים וטקסונומיה. רבים מבלבלים ביניהם. טקסונומיה מאפשרת לנו לקטלג, לתייג ולסדר תכנים לקבוצות. סוגי תכנים מאפשרים לנו להפריד בין תכנים מסוגים שונים.

סוגי תכנים בוורדפרס

סוגי תכנים בוורדפרס

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

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

האפשרויות אינסופיות.

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

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

נחלק את הבעיה לשתיים: יש פה גם הגבלה על סוגי התכנים וגם הגבלה על סוגי העמודים (במקרה שלנו העמוד הראשי).

הקוד

נעתיק את הקוד הבא לקובץ function.php בערכת העיצוב:

function my_get_posts( $query ) {
    if ( is_home() ) $query->set('post_type', array('post','products') );
    return $query;
}
add_filter( 'pre_get_posts', 'my_get_posts' );

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

אתם יכולים לשחק עם הקוד ולהתאים אותו לצרכים שלכם.

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

4 תגובות »

  • מאור כותב :

    אפשר פשוט מאוד להשתמש ב query_posts לפני הלופ ולהוסיף שם את ההתניה אם רוצים שזה יוחל רק על עמוד הבית.

  • ארז כותב :

    מאור, זו דרך לא נכונה לעשות את זה, ברגע שאתה יוצר query_posts זה יוצר בעיות עם פונקציות אחרות עד שתאפס את השאילתא עם reset_query (לא בטוח שזו הפונקציה), לדוגמא is_home לא יפעל
    בקיצור עדיף להשתמש במה שיש פה, זה גם יותר נוח להוסיף את הקוד הזה ולא לערוך את התבנית עצמה, אלא רק להוסיף קודם לfunctions.php

  • מאור כותב :

    וודאי שצריך גם לאפס עם wp_reset_query כדי להימנע מבעיות בלופ.
    התשובה לשאלה מה עדיף ואיך נכון לעבוד היא לא מוחלטת.

  • ארז כותב :

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

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>