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

פילטר לשינוי סדר ההצגה של Rank Math Metabox

למשתמשי Rank Math, השתמשו בפילטר rank_math/metabox/priority כדי לשנות את סדר ההצגה של ה-Rank Math metabox בעורך.

הגדרת הערך ל-low תגרום ל-metabox של Rank Math להופיע לאחר metaboxes אחרים, כמו שדות של ACF.

/**
 * Change the Rank Math Metabox Priority
 *
 * @param array $priority Metabox Priority.
 */
add_filter( 'rank_math/metabox/priority', function( $priority ) {
	return 'low';
});

ביטול ההודעה ACF now automatically escapes unsafe HTML

התוסף ACF בגירסה 6.2.5 ומעלה מציג הודעה בסגנון הבא: ACF now automatically escapes unsafe HTML when rendered by the_field or the ACF shortcode. אם אתם יודעים שהתוכן בשדות שלכם תקין ומעוניינים לבטל הודעה זו הוסיפו את הקוד הבא לקובץ functions.php:

function savvy_acf_remove_msg() {
	add_filter('acf/admin/prevent_escaped_html_notice', '__return_true');
	add_filter('acf/shortcode/allow_unsafe_html', '__return_true');
	add_filter('acf/the_field/allow_unsafe_html', '__return_true');
}
add_action('init', 'savvy_acf_remove_msg');

ביטול האפשרות המובנית של וורדפרס לניחוש כתובות URL

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

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

<?php

function sv_no_redirect_404($redirect_url)
{
	if (is_404()) {
		return false;
	}
	return $redirect_url;
}
add_filter('redirect_canonical', 'sv_no_redirect_404');

הסרת הסכמה של פירורי הלחם ש Yoast מוסיפה לעמודי האתר

התוסף Yoast SEO מוסיף לגרף הסכמה של כל עמוד רכיב מסוג BreadcrumbList. כדי להסיר את סכמת פירורי הלחם (breadcrumbs) ולהשאיר את שאר הגרף, תצטרכו שני פילטרים: הראשון מסיר את הרכיב עצמו, והשני מסיר את ההפניה אליו מתוך WebPage.

הפתרון הזה שימושי כאשר התבנית או תוסף אחר כבר מוסיפים סימון BreadcrumbList ו-Google Search Console מדווח על כפילויות, או כאשר פירורי הלחם לא תואמים למבנה האמיתי של האתר.

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

הקוד

הוסיפו את הסניפט לקובץ functions.php של התבנית שלכם (רצוי בתבנית הבת, כמובן) או לתוסף מותאם אישית:

add_filter( 'wpseo_schema_graph_pieces', 'remove_breadcrumbs_from_schema', 11, 2 );
add_filter( 'wpseo_schema_webpage', 'remove_breadcrumbs_property_from_webpage', 11, 1 );

/**
 * Removes the breadcrumb graph pieces from the schema collector.
 *
 * @param array  $pieces  The current graph pieces.
 * @param string $context The current context.
 *
 * @return array The remaining graph pieces.
 */
function remove_breadcrumbs_from_schema( $pieces, $context ) {
    return array_filter( $pieces, function( $piece ) {
        return ! $piece instanceof \Yoast\WP\SEO\Generators\Schema\Breadcrumb;
    } );
}

/**
 * Removes the breadcrumb property from the WebPage piece.
 *
 * @param array $data The WebPage's properties.
 *
 * @return array The modified WebPage properties.
 */
function remove_breadcrumbs_property_from_webpage( $data ) {
    if ( array_key_exists( 'breadcrumb', $data ) ) {
        unset( $data['breadcrumb'] );
    }
    return $data;
}

כיצד זה עובד

הפילטר wpseo_schema_graph_pieces מקבל את רשימת אובייקטי ה-generator ש-Yoast יריץ עבור העמוד הנוכחי. הפונקציה הראשונה מסננת את האובייקט שה-class שלו הוא Yoast\WP\SEO\Generators\Schema\Breadcrumb, כך שה-BreadcrumbList לא נבנה כלל.

רכיב ה-WebPage עדיין מכיל מאפיין breadcrumb שמפנה אל #breadcrumb באמצעות @id. הפילטר wpseo_schema_webpage מאפשר לכם לערוך את אותו רכיב, והפונקציה השנייה מוחקת את המאפיין כדי שלא תישאר בגרף הפניה לרכיב שכבר לא קיים.

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

למה הסניפט לא עבד?

הסיבה הנפוצה ביותר היא שם class שאיבד את ה-backslashes שלו בזמן העתקה או שמירה (YoastWPSEOGeneratorsSchemaBreadcrumb). PHP לא זורק שגיאה כאשר instanceof בודק מול class שאינו קיים. הוא פשוט מחזיר false, ולכן לא מוסר דבר. העתיקו שוב את הקוד מהקטע שלמעלה.

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

add_filter( 'wpseo_schema_needs_breadcrumb', '__return_false' );

add_filter( 'wpseo_schema_webpage', function( $data ) {
    unset( $data['breadcrumb'] );
    return $data;
} );

עדיין רואים את הסימון? נקו את ה-cache של העמודים, פתחו את קוד המקור של העמוד וחפשו BreadcrumbList. אם התוצאה לא נמצאת בתוך הסקריפט yoast-schema-graph, סביר שתוסף אחר או התבנית שלכם הם אלה שמוסיפים אותו.

סכמה מול פירורי לחם גלויים

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

זה עובד גם בכיוון ההפוך. כיבוי ההגדרה Enable breadcrumbs for your theme תחת ״Yoast SEO > Settings > Advanced > Breadcrumbs״ לא מסיר את סכמת ה-BreadcrumbList, מכיוון ש-Yoast בונה את הרכיב הזה ללא קשר להגדרה.

כדי להסתיר את פירורי הלחם הגלויים, הסירו מהתבניות את הקריאה ל-yoast_breadcrumb(), את השורטקוד סאבי / סניפטים / עמוד 5 או את בלוק פירורי הלחם.

לדרכים נוספות להצגת פירורי לחם (כולל ללא תוסף), קראו את הפוסט כיצד להוסיף פירורי לחם לאתר וורדפרס. הסניפט המקורי לקוח מתיעוד ה-Schema API של Yoast.

שאלות נפוצות

הנה כמה שאלות נפוצות על הסרת סכמת פירורי הלחם ב-Yoast:

האם הסרת הסכמה של פירורי הלחם תפגע ב-SEO?
גוגל משתמש בסימון של פירורי הלחם בכדי להבין היכן העמוד ממוקם במבנה האתר, אז אל תסירו אותו ללא סיבה. עשו זאת כאשר משהו אחר כבר מוסיף סימון BreadcrumbList תקין, או כאשר פירורי הלחם של Yoast שגויים ואין לכם דרך לתקן אותם.
האם אפשר להסיר את סכמת פירורי הלחם רק בעמודים מסוימים?
כן. הוסיפו התניה כמו is_front_page() או is_singular( 'product' ) לשתי הפונקציות, והחזירו את הערך המקורי כאשר התנאי לא מתקיים. הקפידו ששתי ההתניות יהיו זהות.
מהו הפילטר wpseo_schema_webpage?
זהו אחד מפילטרי ה-wpseo_schema_<identifier> של Yoast. הוא מקבל את חלק ה-WebPage כמערך לפני ההדפסה, כך שתוכלו להוסיף, לשנות או להסיר מאפיינים כמו breadcrumb.
האם זה מסתיר גם את פירורי הלחם המוצגים בעמודים?
לא. הסניפט מסיר רק את ה-JSON-LD. פירורי הלחם הגלויים מגיעים מ-yoast_breadcrumb(), מהשורטקוד או מהבלוק בתבנית שלכם, ושם עליכם להסיר אותם.

כיצד לנקות Cache או הוספת גירסה (Versioning) של הקובץ rtl.css

האם אתם טוענים את הקובץ rtl.css בדרך האוטומטית שוורדפרס מספקת? כלומר הוספת הקובץ rtl.css לספריית התבנית שלכם, כך שבמידה ושפת האתר מוגדרת כשפה מימין לשמאל (RTL) קובץ זה יטען אוטומטית, היא הדרך המעודפת לטעינת קובץ CSS ספציפי להגדרות CSS ספציפיות באתרי RTL.

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

כך נראה אותו Query String עליו דיברתי

לכן, בכדי להוסיף את הפרמטר ver לאחר הקובץ rtl.css בהתאם לזמן בו שונה הקובץ לאחרונה, תוכלו להשתמש בפילטר הבא:

add_filter( 'locale_stylesheet_uri', function ($localized_stylesheet_uri) {
    $time_ver = filemtime( get_stylesheet_directory() . '/rtl.css' );
    return add_query_arg( array('ver' => $time_ver), $localized_stylesheet_uri );
});

שינוי התנהגות ה Zoom בעמוד המוצר של ווקומרס

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

add_filter( 'woocommerce_single_product_zoom_options', 'custom_single_product_zoom_options' );
function custom_single_product_zoom_options( $zoom_options ) {
    // Changing the magnification level:
    $zoom_options['magnify'] = 0.7;

    return $zoom_options;
}

ואלו הפרמטרים שבאפשרותכם לשנות:

$zoom_options = array (
    'url' => false,
    'callback' => false,
    'target' => false,
    'duration' => 120, // Transition in milli seconds (default is 120)
    'on' => 'mouseover', // other options: grab, click, toggle (default is mouseover)
    'touch' => true, // enables a touch fallback
    'onZoomIn' => false,
    'onZoomOut' => false,
    'magnify' => 1, // Zoom magnification: (default is 1  |  float number between 0 and 1)
);

לעוד התאמות לעמוד המוצר בווקומרס, תנו מבט במדריך שימוש בהוקים של ווקומרס.

מספר שונה של תקצירים בוורדפרס (Multiple Excerpts Length)

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

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

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

function excerpt($limit) {
      $excerpt = explode(' ', get_the_excerpt(), $limit);

      if (count($excerpt) >= $limit) {
          array_pop($excerpt);
          $excerpt = implode(" ", $excerpt) . '...';
      } else {
          $excerpt = implode(" ", $excerpt);
      }

      $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt);

      return $excerpt;
}

לאחר מכן תוכלו לקבוע את אורך התקציר בתבנית שלכם באופן הבא:

<?php echo excerpt(25); ?>

איך להסיר את המילה ״ארכיון״, ״תגית״ ו״מחבר״ מכותרת עמוד הארכיון

ניתן במקרה זה להשתמש בפילטר הבא לטובת העניין:

add_filter( 'get_the_archive_title', function ($title) {
    if ( is_category() ) {
        $title = single_cat_title( '', false );
    } elseif ( is_tag() ) {
        $title = single_tag_title( '', false );
    } elseif ( is_author() ) {
        $title = '<span class="vcard">' . get_the_author() . '</span>' ;
    } elseif ( is_tax() ) { //for custom post types
        $title = sprintf( __( '%1$s' ), single_term_title( '', false ) );
    } elseif (is_post_type_archive()) {
        $title = post_type_archive_title( '', false );
    }
    return $title;
});

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