למה בוורדפרס דווקא הידני מנצח את התוסף?

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

אחרי שבניתי סכמות AI לעשרות אתרי וורדפרס בשנה האחרונה, אני יכול לזקק את זה ל-3 מגבלות מבניות שאין להן פתרון בתוך תוסף:

  1. תבניות גנריות שלא מכירות את העסק שלכם. Yoast ו-Rank Math מזריקים Organization אחד ו-WebSite אחד — עם השם, הלוגו והכתובת. זה הכל. אין להם דרך לדעת אילו שירותים אתם מוכרים, מי הצוות המקצועי, אילו רשתות חברתיות רלוונטיות (sameAs), או איך הישויות באתר מקושרות אחת לשנייה. כשמודל שפה שואל את עצמו "מי העסק הזה?" — הוא מקבל תג שם. לא ישות.
  2. לפעמים ההזרקה מתבצעת דרך JavaScript. כמה תוספי סכמה (בעיקר גרסאות מוקדמות של Rank Math ו-Schema & Structured Data) הזריקו סכמה דרך wp_footer ולפעמים אפילו דרך JS שרץ אחרי טעינת הדף. הבעיה: GPTBot ו-ClaudeBot לא מריצים JavaScript. הם קוראים את ה-HTML הראשוני בלבד. סכמה שמופיעה רק אחרי רינדור JS — לא נסרקת. וקוראים לי חצי פעם בחודש עם השאלה "למה ChatGPT לא מצטט אותנו?" — התשובה במקרים האלה היא: הסכמה שלכם קיימת רק בפני גוגל, לא בפני מנועי AI.
  3. אין קישור סמנטי בין ישויות. תוסף רגיל מזריק בכל עמוד סכמה נפרדת — WebPage לעמוד "אודות", WebPage לעמוד "צור קשר", Article לפוסט. אין @id. אין isPartOf. אין mainEntity. מנוע AI רואה 20 סכמות מנותקות במקום עסק אחד עם 20 היבטים. במדריך הזה תראו איך לבנות גרף אחד מקושר שאתם שולטים בו במאה אחוז.

אם אתם רוצים השוואה מלאה בין Yoast, Rank Math, Schema Pro ופתרונות אחרים לבין סכמה ידנית — כולל טבלת עלויות, כתבתי על זה מדריך נפרד. כאן אני נכנס לצד הטכני של איך מטמיעים בפועל בוורדפרס.

3 שיטות הזרקה בוורדפרס — יתרונות וחסרונות

לפני שאני נותן קוד, חשוב להבין את 3 השיטות. הבחירה ביניהן תלויה במי אתם: מפתחים, בעלי אתר עם רקע טכני, או בעלי אתר בלי רקע כלל.

שיטה 1 — עריכת header.php ישירות הכי מהיר, הכי שביר

יתרונות: 5 דקות עבודה. פותחים את Appearance → Theme File Editor → header.php, מוסיפים תג <script type="application/ld+json"> ממש לפני </head>, שומרים. זהו.

חסרונות קריטיים: העדכון הבא של ה-theme ידרוס את הקובץ וימחק את הסכמה שלכם — בלי אזהרה, בלי גיבוי. יום אחד אתם בודקים את ה-Rich Results Test ומגלים ששום דבר לא מוזרק. חוץ מזה, זה גם לא עובד עם Block Themes מודרניים (כמו Twenty Twenty-Four) שאין להם בכלל header.php.

מתי כן להשתמש: רק לבדיקה מהירה של 10 דקות — כדי לוודא שהקוד עצמו תקין לפני שאתם מטמיעים "אמיתי". אחרי הבדיקה, מוציאים ומטמיעים באמצעות שיטה 2 או 3.

שיטה 2 — Child Theme + functions.php מומלץ למי שיודע PHP

יתרונות: שורד עדכוני theme. שקיפות מלאה — הקוד יושב במקום אחד, שאני יודע איפה למצוא. יכולת להשתמש בפונקציות של וורדפרס (get_bloginfo, home_url, is_front_page) כדי לבנות סכמות דינמיות שמתעדכנות אוטומטית.

חסרונות: דורש שיהיה לכם Child Theme פעיל. אם עוד אין — צריך ליצור (5 דקות). דורש היכרות בסיסית עם PHP.

מתי להשתמש: ברוב המקרים — זו הבחירה שאני עושה 9 מתוך 10 פעמים.

המבנה הכללי: יוצרים פונקציית PHP שמתחברת ל-hook של wp_head עם priority 5 (זה מבטיח שהסכמה שלכם תרוץ לפני ש-Yoast או Rank Math מזריקים את שלהם). הפונקציה בונה את מבנה ה-@graph, מסבה אותו ל-JSON עם דגלי encoding מדויקים ל-Unicode עברי, ומזריקה אותו כתג <script type="application/ld+json"> ב-<head>.

הפרטים הקטנים שמפילים את הפרויקט: priority לא נכון (הסכמה שלכם נדרסת), encoding לא נכון (עברית הופכת ל-Unicode escapes בלתי קריאים), חוסר החזרת ערכים דינמיים מהאתר (סכמה סטטית שלא מתעדכנת), וקונפליקטים עם ה-publisher של Yoast. כאן ההבדל בין קוד שעובד לקוד שרק "נראה שעובד" מגיע לפרטים שקל לפספס.

שיטה 3 — תוסף Header Footer Code הכי בטוח למי שלא מפתח

יתרונות: אפס קוד PHP. מתקינים תוסף חינמי כמו Insert Headers and Footers by WPCode (10 מיליון התקנות פעילות), נכנסים ל-WPCode → Header & Footer, מדביקים את תג ה-<script type="application/ld+json"> עם הסכמה שלכם ב-Header, שומרים. שורד עדכוני theme, גם עובד עם Block Themes.

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

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

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

גם אם השגתם את המבנה הכללי — הבדל בין קוד "שעובד" לקוד "שמנועי AI באמת מצטטים" יושב בעשרות פרטים קטנים שאני רואה 90% מהמפתחים מפספסים. כמה מהם:

  • פורמט טלפון ישראלי E.164 — הפורמט היחיד שמנועי AI מזהים כטלפון ישראלי (עם קידומת +972 מדויקת ובלי אפס מוביל). כל פורמט אחר (03-1234567, 972-3-1234567) פשוט נדחה. אצלכם הפורמט הזה חייב להיות תואם גם למה שמופיע בטקסט הגלוי — אחרת יש סתירה שגורמת לפסילה.
  • קודי ISO של מדינה וכתובת — כתובת מובנית חייבת להכיל addressCountry בקוד ISO של 2 אותיות (IL), streetAddress, addressLocality, ו-postalCode תקין. פורמטים לא תקניים = השדה מדולג.
  • קישור בין ישויות דרך @id fragments — זה החלק שרוב המפתחים "שוכחים". WebSite חייב להצביע ל-Organization דרך publisher, WebPage ל-WebSite דרך isPartOf, Service ל-Organization דרך provider. הדגם הנכון של הקישוריות בין הישויות הוא מה שהופך את הסכמה מ"רשימה של קטעים" ל"גרף אחד שמנוע השפה מבין".
  • Encoding עברי (Unicode) — ב-PHP חייבים דגלים ספציפיים כדי שהעברית לא תומר ל-Unicode escapes. בלי זה — הסכמה עובדת ולידציה אבל נראית בלתי-קריאה בדוחות, ובלוגים מבוססי מודל.
  • תוכן דינמי מוורדפרס (לא קשיח) — במקום לקבע ערכים בקוד, צריך למשוך אותם מ-get_bloginfo, home_url, ולעטוף בבדיקות של is_front_page, is_singular, וכו'. אחרת כשאתם משנים פרט אחד באתר, הסכמה שלכם מפגרת חודשים.
  • מבנה @graph גלובלי + WebPage לכל עמוד — הישויות הגלובליות (Organization, WebSite) חייבות להזרק פעם אחת בגרף אחד. WebPage חייב להזרק שונה בכל עמוד עם URL קנוני נכון והפניה חזרה ל-WebSite. פספוס של הארכיטקטורה הזאת = כפילויות שגורמות לפסילה.

איך לפתור קונפליקטים עם Yoast/Rank Math

הבעיה הכי נפוצה שאני רואה: המפתח מטמיע סכמה ידנית, שוכח לכבות את הסכמה של Yoast, ואז ב-Rich Results Test יש שתי סכמות Organization על אותו עמוד. גוגל לא נופל על זה (הוא בוחר את הראשונה), אבל זה סימן לרפיון שגם מנועי AI לוקחים בחשבון.

הפתרון: משאירים את Yoast/Rank Math לתפקידים שהם באמת טובים בהם (sitemap, ניתוח קריאות, meta tags), ומכבים רק את מודול הסכמה. הנה איך:

ב-Yoast SEO:

  1. SEO → הגדרות → תוכן → סוגי תוכן
  2. לכל סוג תוכן (Post, Page) — Schema → Article type → בוחרים None
  3. SEO → הגדרות → כללי → הגדרות אתר → פרטי הארגון או פרטי אדם — לרוקן את הפרטים או להשאיר אבל לא לסמוך עליהם
  4. שמירה, אחר כך בודקים ב-View Source שהתג <script class="yoast-schema-graph"> באמת נעלם

ב-Rank Math:

  1. Rank Math → Titles & Meta → Local SEO — לכבות את "Person or Organization" או לרוקן את השדות
  2. Titles & Meta → Posts → Schema Type — בוחרים None
  3. Titles & Meta → Pages → Schema Type — בוחרים None
  4. Titles & Meta → Homepage → Schema Type — בוחרים None
  5. שמירה, בדיקה ב-View Source

איך בודקים שהסכמה שלכם באמת עובדת

אחרי שהטמעתם, יש 3 בדיקות שאני מריץ בכל אתר לפני שאני מסמן ✓:

1. Google Rich Results Test

הכלי הרשמי של גוגל — search.google.com/test/rich-results. מדביקים את ה-URL, מקבלים דוח של כל הסכמות שגוגל מזהה. חשוב לוודא שאין תג ✗ אדום, ושהמספר הכולל של סכמות תואם למה שהזרקתם. אם ההזרקה שלכם היא Organization + WebSite, הדוח אמור להראות בדיוק 2 items ב-Detected structured data.

2. Schema.org Validator

validator.schema.org — הכלי הרשמי של Schema.org. יותר מחמיר מגוגל: הוא יסמן שדות שלא מוגדרים ב-Schema.org (למשל תוסף שהמציא שדה משלו). אני מריץ אותו לוודא שהקוד שלי צנוע ותקני, בלי שדות פרוטו שאף מנוע AI לא יבין.

3. בדיקה מהטרמינל עם curl

הבדיקה שאני הכי אוהב — 10 שניות, בלי דפדפן, מראה בדיוק מה שרצי GPTBot ו-ClaudeBot רואים כשהם ניגשים לאתר שלכם:

curl -s https://your-site.co.il/ | grep -o '"@type":"[^"]*"' | sort | uniq -c

הפלט אמור להיראות משהו כזה:

   1 "@type":"Organization"
   1 "@type":"WebSite"
   1 "@type":"SearchAction"

אם אתם רואים 2 שורות של Organization, יש כפילות. אם אתם לא רואים כלום, זה אומר שהסכמה מוזרקת דרך JavaScript ולא ב-HTML הראשוני — מה שאומר שמנועי AI לא רואים אותה.

3 טעויות קריטיות בהזרקה ידנית בוורדפרס

אחרי עשרות אתרים ראיתי את אותן טעויות חוזרות. שווה לוודא שאתם לא נופלים בהן:

  1. הזרקה ב-<body> במקום ב-<head>. חלק ממפתחים משתמשים ב-wp_footer במקום ב-wp_head, או מדביקים את הסכמה ב-Elementor כ-HTML Widget בתוך העמוד. הבעיה: GPTBot ו-ClaudeBot מעדיפים לבדוק סכמות ב-<head>. סכמה ב-<body> נסרקת חלקית, ולעיתים בכלל לא. תמיד wp_head.
  2. Cache של תוסף (WP Rocket, LiteSpeed, W3 Total Cache) שלא מרענן אחרי שינוי סכמה. שינית את הקוד ב-functions.php, בדקת ב-Rich Results Test, וזה מציג את הסכמה הישנה. אל תבזבזו שעה על ניפוי — פשוט תיכנסו ל-cache plugin ותנקו את כל ה-cache (Purge All). אחר כך בדיקה שוב. זה פותר 80% מהמקרים של "השינוי לא נתפס".
  3. עריכת theme של Elementor / Divi שיש להם schema משלהם — כפל ישויות. ל-Elementor Pro יש הגדרת Site Identity עם Business Info שמזריק Organization schema. ל-Divi Theme Options יש טאב SEO עם Organization schema. אם אתם עורכים בפאנל שלהם וגם מזריקים ידני — יש כפילות. הפתרון: לרוקן את השדות בפאנל של ה-page builder, ולסמוך רק על ההזרקה הידנית שלכם.

מה בעצם מפריד בין הטמעה שעובדת להטמעה שלא

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

  • 6+ סוגי סכמה מקושרים דרך @id — Organization, WebSite, WebPage לכל עמוד, Service לכל שירות, Person לצוות, FAQPage לעמודי שאלות. כל אחת חייבת להצביע נכון לאחרות, אחרת מנוע השפה רואה ישויות מבודדות במקום עסק שלם.
  • אימות שדות מול המציאות של האתר — קריאה של כל עמוד באתר, שליפת כל עובדה מסחרית (טלפון, מחיר, שעות, כתובת), והצלבה מול מה שהסכמה מכריזה. סתירה אחת בין הסכמה לעמוד = מנוע השפה מדלג על העסק.
  • בדיקת נגישות זחלנים ברמת השרת — לא רק robots.txt. גם הגדרות Cloudflare, WAF, ו-CDN שחוסמים GPTBot ו-ClaudeBot מבלי לדעת. יש שיטת בדיקה שאני מריץ שגם 90% מהמפתחים לא מכירים.
  • מדידה עם צילומי מסך מ-3 מנועים לפני-אחרי — שואל את Perplexity, ChatGPT ו-Google AI Mode על העסק לפני העבודה, מתעד. שואל שוב אחרי, מתעד. הראייה היחידה שההשקעה עבדה — לא ניחוש.
  • פתרון קונפליקטים עם page builders — Elementor Pro, Divi, Bricks, Oxygen — לכל אחד יש schema משלו שיוצר כפילות ופסילה. יודע איך לזהות ולפתור בכל אחד מהם.
  • ליווי אחרי עדכוני וורדפרס — WordPress 6.5, 6.6, PHP 8.3 — כל עדכון מרכזי שינה משהו ב-wp_head. סכמה שעבדה אתמול פתאום נשברת. הידע איפה לחפש שווה שעות של ניפוי.

סה"כ 15-25 שעות עבודה על אתר בינוני. אצל לקוחות אני מציע את זה ב-₪4,500 חד-פעמי עם תוצאה תוך 7 ימים, כולל הליווי החודשי הראשון. השוואת עלויות מלאה של תוספים מול ידני נמצאת כאן.

סיכום — מה לזכור מהמדריך הזה

  1. לא לגעת ב-header.php ישירות — או Child Theme + functions.php, או תוסף כמו WPCode. שתי דרכים ששורדות עדכוני theme.
  2. להשתמש ב-wp_head עם priority 5 — הסכמה שלכם מוזרקת לפני התוספים ומכתיבה את הסדר.
  3. לכבות את מודול הסכמה של Yoast/Rank Math — כפל Organization על אותו עמוד מזיק.
  4. לבדוק תמיד ב-3 מקומות — Rich Results Test, Schema.org Validator, ו-curl | grep '@type'.
  5. לנקות cache אחרי כל שינוי — שכחת = שעה של ניפוי מיותר.

שאלות ותשובות

לא חובה, אבל מאוד עוזר. אם אתה יודע לפתוח functions.php ולערוך אותו בלי לשבור את האתר — אתה יכול לעשות את זה לבד תוך שעה־שעתיים לפי המדריך הזה. אם אין לך רקע ב-PHP בכלל, השיטה הכי בטוחה היא תוסף כמו Insert Headers and Footers — הוא לא דורש קוד ולא ישבור לך כלום.
הכי מהיר: תגלוש לעמוד הבית של האתר, לחיצה ימנית → View Page Source, וחיפוש "application/ld+json". כל בלוק כזה הוא סכמה שכבר מוזרקת. אם אתה רואה Organization או WebSite, סימן שהתוסף מזריק סכמה בסיסית. אפשר גם ב-Rich Results Test של גוגל — הוא יציג את כל הסכמות שהוא מזהה בעמוד.
כן, וזו טעות שראיתי הרבה. ל-Elementor Pro ול-Divi יש מודולים שמזריקים סכמה משלהם (במיוחד לפוסטים ולפורמים). התוצאה: כפילות של Organization או WebPage. הפתרון: ב-Elementor, Site Settings → Site Identity — לוודא ששדות Organization ריקים. ב-Divi, Divi → Theme Options → SEO — לכבות את מודול Schema. אחרי זה להטמיע ידני.
רק ב-Child Theme או בתוסף. עריכה ישירה של header.php ב-theme הראשי תיעלם בעדכון הבא (וגם אין אזהרה). אני תמיד מטמיע את הסכמה ב-functions.php של Child Theme, או בתוסף קוד כמו Insert Headers and Footers. שתי הדרכים שורדות עדכוני theme בלי בעיה.
כן. זה החיסרון של סכמה ידנית לעומת תוסף — התוסף מושך את השם משדה מרכזי בוורדפרס, ובידני אתה כותב את השם בקוד. אם השם משתנה, צריך לפתוח את functions.php ולעדכן. הפתרון שאני משתמש בו: לשלוף את שם העסק מ-get_bloginfo('name') במקום לכתוב מחרוזת קשיחה, ואז כל שינוי בהגדרות וורדפרס יעדכן אוטומטית.
WooCommerce כבר מזריק סכמת Product לכל מוצר אוטומטית — זה חלק מהליבה של הפלאגין. הידני שלנו מתמקד בסכמות הישות: Organization, WebSite, LocalBusiness, Service, FAQPage. את סכמת המוצרים משאירים ל-WooCommerce ולא נוגעים. אם רוצים לשדרג את סכמת Product עצמה (למשל להוסיף aggregateRating עם ביקורות), עושים את זה בתוסף ייעודי או ידני לכל מוצר — לא בקוד גלובלי.

לא רוצים לגעת בקוד וורדפרס לבד?

אנחנו בונים סכמת AI ידנית ומזריקים אותה כך שלא תישבר בעדכוני theme. עד 10 עמודים, ₪4,500 חד-פעמי.

לתיאום שיחת התאמה קצרה ← המדריך המלא לסכמת AI לאתרים