חיפוש ]

ארכיונים: סניפטים וקטעי קוד

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

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

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

התוסף 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 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 SEO מוסיף עבור פירורי הלחם (breadcrumbs), אז השתמשו בסניפט הבא:

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;
}

קוד זה יסיר את BreadCrumbs Schema מכלל עמודי האתר. עליכם להוסיף סניפט זה לקובץ functions.php של התבנית שלכם. (עדיפות לתבנית הבת כמובן).
 

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

האם אתם טוענים את הקובץ 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) במעבר עכבר על מוצר בעמוד המוצר של ווקומרס, תוכלו לעשות זאת באמצעות הפילטר 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)
);

אולי אתם יודעים ואולי לא, אך ניתן לשנות או לקבוע את אורך התקציר (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;
});