ארכיונים: Snippets | עמוד 11

ביטול והסרת סכמה (Schema) ונתונים מובנים של Yoast

Yoast SEO מוסיף לכל עמוד גרף סכמה (Schema) בפורמט JSON-LD, שנבנה לפי ההגדרות שהגדרתם בתוסף. כדי לבטל לחלוטין את הסכמה של Yoast, החזירו false בפילטר wpseo_json_ld_output. בגרסאות האחרונות של Yoast יש גם הגדרה שעושה בדיוק את אותו הדבר.

כדאי לעשות זאת כאשר התבנית, תוסף ייעודי לסכמה או JSON-LD שכתבתם ידנית כבר מכסים את הנתונים המובנים שלכם, והגרף של Yoast יוצר כפילויות.

אם אתם רוצים להסיר רק את הסימון של פירורי הלחם, ראו את הסרת הסכמה של פירורי הלחם ב-Yoast. כדי לשנות את פירורי הלחם עצמם, ראו הוספת קישור לפירורי הלחם של Yoast SEO.

הקוד

הוסיפו את השורה הבאה לקובץ functions.php של תבנית הבת שלכם או לתוסף מותאם אישית:

add_filter( 'wpseo_json_ld_output', '__return_false' );

כיצד זה עובד

Yoast מריץ את wpseo_json_ld_output ממש לפני שהוא מדפיס את בלוק ה-<script type="application/ld+json" class="yoast-schema-graph">. אם הפילטר מחזיר false או מערך ריק, Yoast לא מדפיס דבר.

פעולה זו מסירה את הגרף כולו: Organization או Person, WebSite, WebPage, Article, BreadcrumbList, וגם את הסכמה של בלוקי ה-FAQ וה-How-to של Yoast. כותרות, תיאורי מטא ותגיות Open Graph הם פלט נפרד, והם נשארים במקומם.

גם פונקציה עם שם (named function) שמחזירה מערך ריק תעבוד, מכיוון ש-Yoast מתייחס ל-false ול-[] באותה צורה. __return_false פשוט קצר יותר.

כדי לבטל את הסכמה רק בעמודים מסוימים, החזירו false בהתניה והעבירו את הערך המקורי הלאה בכל שאר המקרים:

add_filter( 'wpseo_json_ld_output', function( $data ) {
	if ( is_page( 'contact' ) ) {
		return false;
	}
	return $data;
} );

ביטול הסכמה של Yoast ללא קוד

בגרסה 26.8 נוסף ל-Yoast SEO עמוד הגדרות לסכמה. גשו אל ״Yoast SEO > Settings > Advanced > Schema״ וכבו את Enable Schema Framework. בצד הקדמי של האתר, פעולה זו מוסיפה בדיוק את אותו פילטר __return_false שהצגנו למעלה.

ב-Yoast ממליצים בחום להשאיר את ההגדרה פעילה. כבו אותה רק כאשר כלי אחר מחליף את הגרף במלואו, מכיוון שללא נתונים מובנים, האופן שבו העמודים שלכם מופיעים בתוצאות החיפוש עשוי להשתנות.

אם ההגדרה מוצגת ככבויה, וניסיון להפעיל אותה מציג את ההודעה ״Yoast Schema Framework can't be enabled״, קוד כלשהו כבר מחזיר false או מערך ריק בפילטר wpseo_json_ld_output.

ייתכן שמדובר בתבנית, בתוסף או בסניפט ישן. כדי למצוא אותו, חפשו בתיקיית wp-content:

grep -rn "wpseo_json_ld_output" wp-content/

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

הסרת חלק מהסכמה בלבד

הרבה בעיות בסגנון ״Yoast הרס לי את הסכמה״ הן למעשה כפילויות: תוסף אחר מוסיף גם הוא Article או BreadcrumbList. במקרה כזה תוכלו להסיר רק את החלק החופף ולהשאיר את שאר הגרף.

לכל חלק (piece) יש פילטר wpseo_schema_needs_<identifier>. המזהים הם article, webpage, main_image, breadcrumb, website, organization, person, author, faq ו-howto.

// Keep Yoast's graph but drop its Article piece.
add_filter( 'wpseo_schema_needs_article', '__return_false' );

חלקים אחרים עדיין עשויים להפנות לחלק שהסרתם באמצעות @id. בדקו את הפלט ב-Rich Results Test, ולגבי פירורי לחם השתמשו בסניפט המלא שבעמוד פירורי הלחם שקישרנו למעלה.

לדרכים נוספות להתאים את הפלט של Yoast, עיינו בפילטרים של Yoast SEO ובתיעוד ה-Schema API של Yoast.

שאלות נפוצות

הנה כמה שאלות נפוצות על ביטול הסכמה של Yoast SEO:

האם ביטול הסכמה של Yoast משפיע על כותרות ה-SEO ותיאורי המטא?
לא. הפילטר wpseo_json_ld_output והגדרת ה-Schema מסירים רק את בלוק ה-JSON-LD. כותרות, תיאורי מטא, canonical, robots ותגיות לרשתות חברתיות מודפסים בנפרד וממשיכים לעבוד.
האם צריך להסיר את Yoast SEO בכדי להיפטר מהסכמה שלו?
לא, הפילטר או ההגדרה מספיקים. אם בכל זאת תסירו את התוסף, שימו לב שמחיקתו משאירה את הנתונים שלו (טבלאות wp_yoast_, אפשרויות ו-post meta) במסד הנתונים, כך שהתקנה מחדש תשחזר את ההגדרות שלכם.
האם האינטגרציה עם Wincher קשורה לסכמה של Yoast?
לא. Wincher הוא כלי למעקב אחר מיקומים של ביטויי מפתח, והוא לא מוסיף דבר לנתונים המובנים שלכם. בכדי לכבות אותו, גשו אל ״Yoast SEO > Integrations״ וכבו את ההגדרה של Wincher.
הוספתי את הפילטר אבל הסכמה עדיין שם. מה הבעיה?
בדרך כלל cache של עמודים מגיש את ה-HTML הישן, אז נקו אותו ובדקו שוב את קוד המקור. אם ה-JSON-LD עדיין שם, בדקו את ה-class שלו: כל בלוק ללא yoast-schema-graph מגיע מתוסף אחר או מהתבנית.

הצגת תאריך יחסי בוורדפרס

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

# For posts & pages #
<?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?>

# For comments #
<?php echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago'; ?>

להצגת זמן/תאריך נוספת, תנו מבט בהצגת זמן קריאה משוער לפוסט.

הצגת המספר הכולל של הפוסטים ב CPT מסויים

סניפט קצר זה מאפשר לכם להציג את המספר הכולל של הפוסטים עבור סוג תוכן ספציפי (Custom Post type). הוסיפו את הקוד היכן שאתם רוצים להציג את מספר הפוסטים ושנו את POST-TYPE-NAME לשם סוג התוכן שאת מספרו אתם מעוניינים להציג.

<?php
     // Get total number of posts in POST-TYPE-NAME
     $count_posts = wp_count_posts('POST-TYPE-NAME');
     $total_posts = $count_posts->publish;
     echo $total_posts;
?>

שינוי אורך התקציר הדיפולטיבי של וורדפרס

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

function sv_excerpt_length( $length ) {
	return 20;
}
add_filter( 'excerpt_length', 'sv_excerpt_length', 999 );

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

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

כיצד להציג סוגי תוכן מותאמים בתוצאות החיפוש

סוגי תוכן מותאמים (CPT's) אינם נכללים בתוצאות החיפוש של וורדפרס כברירת מחדל. הסניפט הבא יאפשר לכם לבחור אילו סוגי תוכן מותאמים יתווספו לתוצאות החיפוש של וורדפרס. הוסיפו קוד זה לקובץ functions.php של התבנית שלכם ושנו את שמות סוגי התוכן בהתאם:

function custom_post_type_search( $query ) {
     if ($query->is_search) {
          $query->set('post_type', array( 'post', 'myCustomPostType1', 'myCustomPostType2', 'myCustomPostType3'));
     }
     return $query;
}
add_filter( 'pre_get_posts', 'custom_post_type_search' );

אם אתם מעוניינים באפשרויות חיפוש והצגת תוצאות חיפוש מתוחכמות יותר תנו מבט בפוסט ״שיפור מנגנון החיפוש באמצעות Relevanssi״.

הצגת תוכן עבור מובייל בלבד באמצעות wp_is_mobile

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

<?php  if( wp_is_mobile()){  ?>
// mobile stuff goes here
<?php } else { ?>
// desktop stuff goes here
<?php  } ?>

שימו לב! – עליכם לשים לב כי מנגנון הקאש שלכם מבצע Caching בנפרד עבור מובייל ועבור דסקטופ. ניתן לבצע זאת למשל באמצעות התוסף WP-Rocket.

הוספת קלאס לפוסט הראשון בלולאה של וורדפרס

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

function wps_first_post_class( $classes ) {
    global $wp_query;
    if( 0 == $wp_query->current_post )
        $classes[] = 'first';
        return $classes;
}
add_filter( 'post_class', 'wps_first_post_class' );

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

קביעת מבנה הקישורים באמצעות קוד

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

function set_permalink(){
     global $wp_rewrite;
     $wp_rewrite->set_permalink_structure('/%year%/%monthnum%/%postname%/');
}
add_action('init', 'set_permalink');

שימו לב כי גם במקרה זה על mod_rewrite להיות פעיל בשרת.

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

הצגת ענן תגיות בתבניות וורדפרס

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

הוסיפו את הקוד הבא היכן שתרצו בתבנית שלכם ושנו את הפרמטרים בהתאם:

<?php wp_tag_cloud(array(
     'smallest' => 10, // size of least used tag
     'largest' => 18, // size of most used tag
     'unit' => 'px', // unit for sizing
     'orderby' => 'name', // alphabetical
     'order' => 'ASC', // starting at A
     'exclude' => 6 // ID of tag to exclude from list
     ));
?>

לעוד על תגיות וטקסונומיות, תנו מבט בטקסונומיות בוורדפרס.