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

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

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

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

הוספת CSS לאימיילים של ווקומרס

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

<?php
/**
 * WooCommerce
 * Add inline CSS to emails sent out
 */
function sv_add_css_to_woo_email() {
    echo '<style type="text/css">
             h1 {
                 text-align: center !important;
                 color: #DDD;
             }
         </style></pre>'; 
}
add_action( 'woocommerce_email_header', 'sv_add_css_to_woo_email' );

איך לשנות את הקו המפריד (delimiter) בפירורי הלחם של ווקומרס

בכדי להחליף את הקו המפריד (delimiter) בפירורי הלחם (breadcrumbs) של ווקומרס השתמשו בפילטר הבא:

function in_woocommerce_breadcrumb_defaults($args){
    $args['delimiter']   = '&nbsp;&#124;&nbsp;';
    return $args;
}
add_filter('woocommerce_breadcrumb_defaults','in_woocommerce_breadcrumb_defaults');

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

array(
   'delimiter'   => '&nbsp;&#47;&nbsp;',
   'wrap_before' => '<nav class="woocommerce-breadcrumb">',
   'wrap_after'  => '</nav>',
   'before'      => '',
   'after'       => '',
   'home'        => _x( 'Home', 'breadcrumb', 'woocommerce' ),
)

כיצד לאפשר תקציר (excerpt) לעמודים בוורדפרס

וורדפרס מספקת את האפשרות ליצור תקציר (excerpt) לפוסטים על ידי הכנסת טקסט בתיבת בתקציר בעמוד עריכת הפוסט. אך תקצירים אלו אינם מופיעים עבור עמודים (pages post type) ואין אפשרות להוסיף או להפעיל אפשרות זו דרך ממשק הניהול של וורדפרס.

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

<?php

// START COPY FROM HERE
function add_excerpt_pages() {
    add_post_type_support('page', 'excerpt');
}
add_action('init', 'add_excerpt_pages');

 

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

כיצד לאפשר תקציר (excerpt) לעמודים בוורדפרס

כיצד לאפשר תקציר (excerpt) לעמודים בוורדפרס

סמנו את תיבת התקציר ובזה סיימתם. כעת תגלו כי נוספה תיבת תקציר עבור כל העמודים באתר…

שינוי מספר המוצרים המופיעים בכל עמוד

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

שינוי מספר המוצרים המופיעים בכל עמוד

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

/**
 * Change number of products that are displayed per page (shop page)
 */
add_filter( 'loop_shop_per_page', 'new_loop_shop_per_page', 20 );

function new_loop_shop_per_page( $cols ) {
  // $cols contains the current number of products per page based on the value stored on Options –> Reading
  // Return the number of products you wanna show per page.
  $cols = 9;
  return $cols;
}

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

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

<?php function sv_filter_query($query, $error = true) {
    if (is_search()) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;
        if ($error == true)
            $query->is_404 = true;
    }
}

add_action('parse_query', 'sv_filter_query');
add_filter('get_search_form', create_function('$a', "return null;"));
    
function remove_search_widget() {
    unregister_widget('WP_Widget_Search');
}

add_action('widgets_init', 'remove_search_widget');

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

האם תהיתם כיצד ניתן להגביל את תוצאות החיפוש לסוג תוכן ספציפי (Specific Custom Post Type)? זה מאד פשוט. כבר ראינו כיצד לבטל לגמרי את אפשרות החיפוש בוורדפרס על ידי מודיפיקציה לקובץ functions.php. כעת נעשה פעולה דומה בכדי לפלטר את תוצאות החיפוש שלנו.

גוש לקובץ functions.php והוסיפו את הקוד הבא:

function sv_search_filter($query) {
 
    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('post','page'));
    }
 
return $query;
}
 
add_filter('pre_get_posts','sv_search_filter');

שימו לב לשורה הבאה:

$query->set('post_type',array('post','page'));

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

הצגה רק של אפשרות ״משלוח חינם״ בעגלת הקניות ובעמוד התשלום

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

/**
 * Hide shipping rates when free shipping is available.
 * Updated to support WooCommerce 2.6 Shipping Zones.
 *
 * @param array $rates Array of rates found for the package.
 * @return array
 * @link https://docs.woocommerce.com/document/hide-other-shipping-methods-when-free-shipping-is-available/
 */
function prefix_hide_shipping_when_free_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'prefix_hide_shipping_when_free_is_available', 100 );

שדרוג ושנמוך גירסת וורדפרס באמצעות wp-cli

WP-CLI הינו סט כלים המספקים פוקציונליות לניהול אתרי וורדפרס. במדריך זה, נתאר את יתרונות השימוש ב WP-CLI ונדגים מספר פקודות מתקדמות שיעשו לכם את החיים קלים יותר בסביבת הפיתוח של וורדפרס. ניתן להשתמש ב wp-cli בכדי או לשנמך או את הגירסה של וורדפרס לגירסה ספציפית.

עדכון לגירסה האחרונה של וורדפרס:

wp core update

עדכון לגירסה מסויימת של וורדפרס:

wp core update --version=5.5.3

התקנה או שנמול של גירסת וורדפרס:

wp core update --version=5.5.3 --force

בדיקה של גירסת וורדפרס שמותקנת:

wp core version

או עם מידע נוסף:

wp core version --extra

איך לנהל בלוקים בגוטנברג (Block Manager)?

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

כיצד לפתוח את אותו מנהל בלוקים

וכך נראה אותו מנהל הבלוקים. הסירו את הסימון מהבלוקים אותם אתם מעוניינים להסתיר:

מנהל הבלוקים של גוטנברג

הסרה של DNS prefetch הנטען אוטומטית בוורדפרס

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

<link rel=’dns-prefetch’ href='//s.w.org'/>
<link rel='dns-prefetch' href='//fonts.googleapis.com'/>

בקוד המקור זה נראה כך לדוגמה:

הסרה של DNS prefetch הנטען אוטומטית בוורדפרס

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

function remove_dns_prefetch () {
    remove_action( 'wp_head', 'wp_resource_hints', 2, 99 );
}
add_action( 'init', 'remove_dns_prefetch' );

הגבלת מספר השורות ל N שורות ב CSS

סניפט מאד שימושי המאפשר להגביל את מספר השורות של טקסט מסויים באמצעות CSS בלבד. נעשה זאת באמצעות התכונה line-blamp ב CSS ובאופן הבא:

.text {
   overflow: hidden;
   text-overflow: ellipsis;
   display: -webkit-box;
   -webkit-line-clamp: 2; /* number of lines to show */
   -webkit-box-orient: vertical;
}

וזה ה Markup למשל:

<div class="text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam consectetur venenatis blandit. Praesent vehicula, libero non pretium vulputate, lacus arcu facilisis lectus, sed feugiat tellus nulla eu dolor. Nulla porta bibendum lectus quis euismod. Aliquam volutpat ultricies porttitor. Cras risus nisi, accumsan vel cursus ut, sollicitudin vitae dolor. Fusce scelerisque eleifend lectus in bibendum. Suspendisse lacinia egestas felis a volutpat.
</div>

ווקומרס - ביטול צורת תשלום מסויימת עבור שיטת משלוח ספציפית

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

ווקומרס - ביטול צורת תשלום מסויימת עבור שיטת משלוח ספציפית

בכל מקרה הינה קוד סניפט המאפשר לעשות משהו בסגנון (functions.php):

/**
 * @snippet       ביטול צורת תשלום מסויימת עבור שיטת משלוח ספציפית
 * @author        Roee Yossef
 * @website       https://savvy.co.il
 */
  
  
function sv_gateway_disable_shipping_326( $available_gateways ) {
     
   if ( ! is_admin() ) {
        
      $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
        
      $chosen_shipping = $chosen_methods[0];
        
      if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
         unset( $available_gateways['cod'] );
      }
        
   }
     
   return $available_gateways;
     
}
add_filter( 'woocommerce_available_payment_gateways', 'sv_gateway_disable_shipping_326' );

עדכון תמונת השיתוף המופיעה כשמשתפים פוסט בפייסבוק

באפשרותכם לבדוק כיצד פייסבוק תציג פוסט בזמן שיתוף באמצעות ה Facebook Debugger (ולחיצה על כפתור ה Debug).

Facebook Debugger - Yoast Local Settings

אם החלפתם תמונה ובזמן שיתוף עדיין מופיעה התמונה הישנה – בצעו Debug לפוסט ואחר מכן לחצו על Scrape Again על מנת שפייסבוק יזהו את התמונה החדשה.

רק נציין כי לפעמים יש צורך ללחוץ על Scrape Again יותר מפעם אחת על מנת שפייסבוק יזהו את השינויים.

Scraping Facebook Data

החלפת הלוגו של PayPal באתרי ווקומרס

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

/**
 * Add custom gateway icons
 *
 * @param string $icon Image HTML.
 * @param string $gateway_id Gateway ID.
 *
 * @return string
 */
function sv_custom_wc_gateway_icons($icon, $gateway_id)
{
    // Example for PayPal:
    if ('paypal' == $gateway_id) {
        $icon = '<img src="' . get_stylesheet_directory_uri() . '/images/paypal.svg" alt="' . __('PayPal') . '" />';
    }
    return $icon;
}

add_filter('woocommerce_gateway_icon', 'sv_custom_wc_gateway_icons', 10, 2);

שנו את הנתיב ואת שם הקובץ לתמונה החדשה ואתם מסודרים!

שינוי הזמן עד לניתוק אוטומטי ממשק הניהול - וורדפרס

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

function keep_me_logged_in_for_1_year( $expirein ) {
   return 31556926; // 1 year in seconds
}
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );