Search
Close this search box.

הוספת post types למערכת וורדפרס

מה זה post type בוורדפרס – לא צריך לספר. נכון? מדובר על סוג תוכן.

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

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

בואי נראה איך את יכולה להוסיף סוגי תוכן מותאמים אישית (Custom post types או בקיצור CPT) בלי שום תוסף וכמעט ללא מאמץ.

איך מוסיפים קוד PHP לאתר?

אני יודעת, זה נשמע מלחיץ, אבל זה שום דבר.

אם יש לך גישה למערכת הקבצים של האתר – הכי טוב. תכנסי לנתיב הבא:

wp-content/themes/שם-התבנית-הפעילה-באתר

ושם תפתחי לעריכה את הקובץ שנקרא functions.php

חשוב לוודא שזו תבנית בת (יש לה בשם את המילה child).

אם אין לך גישה למערכת הקבצים, או שהאתר לא עובד עם תבנית בת (אלא ישירות על hello-elementor או Astra וכדו') – תוכלי להתקין תוסף להוספת קוד PHP לאתר. התוסף Insert PHP Code Snippet הוא תוסף מצוין.

זהו, כעת יש לך אפשרות להוסיף קוד PHP. אפשר להוסיף CPT בעצמנו.

הקוד להוספת Post Type לאתר

יש להוסיף את הקוד הבא:

<?php
add_action( 'init', 'init_my_posttypes' );
function init_my_posttypes() {
   $args = array(
        'label'        => ‘מתכונים’,
        'has_archive'  => true,
        'hierarchical' => false,
        'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
        ‘menu_icon’    => ''
    );

    register_post_type( 'recipe', $args );
}

אז מה היה לנו כאן?

הצהרנו על פונקציה שWP צריך להריץ בשלב התחלתי שלו, מה שנקרא init.
תחילה אנחנו מכינים את מערך ההגדרות עבור סוג התוכן החדש. ההגדרות הקריטיות הן:
has_archive – האם לייצר לסוג התוכן החדש עמוד ראשי. לדוגמה עבור פרויקטים – העמוד הראשי יהיה עמוד פורטפוליו. אבל עבור שיעורים – אין לי עמוד ראשי.
במידה ואני רוצה שיהיה עמוד ראשי – יש לכתוב true, כמו בדוגמה
במידה ואין לי צורך בעמוד הראשי – יש לכתוב false.
אפשר לשנות את ההגדרה בכל עת.
hierarchical – ההגדרה הזו תקבע האם יש לנו היררכיה בפוסטים החדשים. לדוגמה האם יכול להיות מתכון שהוא "אבא" לוגי של כמה מתכונים. נניח עמוד מתכון שנקרא "ארוחת מלווה מלכה". הפוסט הזה נראה קצת שונה מהמתכונים האחרים. יש בו את המלל למעלה, ואז במקום המתכון עצמו – מוצגים מתכונים שאותם הכנתי למלווה המלכה.
זו לא קטגוריה אלא מתכון שהוא "אבא" לוגי של מתכונים אחרים.
בדרך כלל – צריך לכתוב כאן false. די נדיר שנצטרך היררכיה בפוסטים.
label – השם של סוג התוכן בתצוגה. אפשר להגדיר מערך שלם של שמות, איך יהיה כתוב "הוספת מתכון חדש" ואיך יהיה כתוב "מחיקת מתכון". אם מעניין אותך איך עושים את זה – שלחי לי במייל חוזר ואכתוב פוסט על זה.
menu_icon – איזה אייקון להציג בסרגל של WP עבור סוג התוכן החדש. אפשר לבחור מכאן אייקונים. תאתרי במאגר את האייקון המתאים, תלחצי עליו ואז תעתיקי את השם שלו בלי המילה dashicons. לדוגמה users, camera-alt וכו'.
supports – כאן נגדיר אילו רכיבי WP צריכים להיות עבור סוג התוכן החדש. האם נדרש עבורו editor, שזה שדה התוכן הרגיל שלו? האם נדרשת תמונה (thumbnail)? האם נדרשות תגובות?
האפשרויות הנפוצות ביותר הן:

  • כותרת – title
  • תוכן – editor
  • תקציר – excerpt
  • תמונה (featured image) – נקרא thumbnail
  • תגובות – comments
  • גרסאות – revisions – נדרש במידה והלקוח בקש לשמור את הגרסאות של העריכה של התכנים שלו. אם לא בקשו את זה במפורש – עדיף לא להגדיר כדי לא להעמיס על הDB.

בשורה הכמעט אחרונה, איפה שכתוב register_post_type – יש לתת את השם של סוג התוכן עבור המערכת. איך WP יקרא לסוג התוכן החדש. השם חייב להיות באנגלית בלבד, בלי רווחים ועדיף בלי הסימן מינוס (-). רק אותיות קטנות באנגלית + קו תחתי כדי להפריד בין מילים. לדוגמה press_release.
לאחר שסיימת לכתוב את כל זה, את שומרת את הקובץ, ומרעננת את העמוד בניהול. תוכלי לראות את סוג התוכן החדש מחייך אליך מהסרגל הצידי של וורדפרס.
כעת את יכולה להוסיף שדות מותאמים עבור סוג התוכן הזה, ולייצר עבורו תבנית אחידה באלמנטור.

הקישורים לעמודים של הפוסטים החדשים שבורים?

הרבה פעמים קורה שהקישורים לעמודים של הפוסטים החדשים (שיעורים, מתכונים וכדו') שבורים ומגיעים לעמודי 404.

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

בהצלחה!!!