ארכיון: סניפטים וקטעי קוד | עמוד 2

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

הקוד הבא הוא דוגמה המתארת כיצד להוסיף אפשרות של מיון (sorting) אקראי בעמוד הקטלוג של מוצרי ווקומרס. באותו אופן אתם יכולים להוסיף כל אפשרות מיון שתרצו בהתאם לאפשרויות העומדות בפניכם עבור הפרמטר orderby של WP_Query. תנו מבט ב WordPress Codex לעוד מידע על הפרמטר orderby.

על קוד זה להיות בקובץ functions.php כמובן:

/**
 * Add custom sorting options (asc/desc)
 */
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
  $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
	if ( 'random_list' == $orderby_value ) {
		$args['orderby'] = 'rand';
		$args['order'] = '';
		$args['meta_key'] = '';
	}
	return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) {
	$sortby['random_list'] = 'Random';
	return $sortby;
}

כיצד לאפשר HTML במונחים (Terms) של קטגוריות ותגיות

כברירת מחדל וורדפרס מסירה HTML מהתיאור (description) של תגיות וקטגוריות. הוסיפו קוד זה לקובץ functions.php בכדי לאפשר HTML בתיאור של מונחים אלו.

/**
 * Allow HTML in term (category, tag) descriptions
 */
foreach ( array( 'pre_term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_filter_kses' );
	if ( ! current_user_can( 'unfiltered_html' ) ) {
		add_filter( $filter, 'wp_filter_post_kses' );
	}
}
 
foreach ( array( 'term_description' ) as $filter ) {
	remove_filter( $filter, 'wp_kses_data' );
}

הוספת קוד מעקב משלכם בעמוד ״תודה״ של ווקומרס

הקוד שלפניכם מאפשר להוסיף קוד מעקב כלשהו בעמוד התודה (Thank You Page) של ווקומרס לאחר רכישה. המשתנה $order יכיל את כל המידע הרלוונטי של אותה הזמנה שבוצעה כך שתוכלו לשלוח את הפרטים לאותו שירות בו אתם משתמש למעקב.

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

/**
 * Add custom tracking code to the thank-you page
 */

function my_custom_tracking( $order_id ) {

	// Lets grab the order
	$order = wc_get_order( $order_id );

	/**
	 * Put your tracking code here
	 * You can get the order total etc e.g. $order->get_total();
	 */
	 
	// This is the order total
	$order->get_total();
 
	// This is how to grab line items from the order 
	$line_items = $order->get_items();

	// This loops over line items
	foreach ( $line_items as $item ) {
  		// This will be a product
  		$product = $order->get_product_from_item( $item );
  
  		// This is the products SKU
		$sku = $product->get_sku();
		
		// This is the qty purchased
		$qty = $item['qty'];
		
		// Line item total cost including taxes and rounded
		$total = $order->get_line_total( $item, true, true );
		
		// Line item subtotal (before discounts)
		$subtotal = $order->get_line_subtotal( $item, true, true );
	}
}
add_action( 'woocommerce_thankyou', 'my_custom_tracking' );

הרחבת שדה הכתובת בווקומרס

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

/**
 * Make the billing address fields wider
 */

function custom_woocommerce_billing_fields( $fields ) {

     $fields['billing_address_1']['class'] = array( 'form-row-wide' );
     $fields['billing_address_2']['class'] = array( 'form-row-wide' );

     return $fields;
}
add_filter('woocommerce_billing_fields', 'custom_woocommerce_billing_fields');

סיום הזמנה אוטומטי בווקומרס (Auto Complete Orders)

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

/**
 * Auto Complete all WooCommerce orders.
 */
function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );

כיצד להסתיר scrollbars בדפדפן ועדיין לאפשר גלילה?

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

.element::-webkit-scrollbar {
    width: 0;
    height: 0
}

.element {
   scrollbar-width: none;
}

אז נאמר ואתם רוצים להסתיר את ה scrollbars המופיעים עבור תגית ה <html> – ניתן לעשות זאת באמצעות ה CSS הבא:

::-webkit-scrollbar {
    width: 0;
    height: 0
}

html {
   scrollbar-width: none;
}

שימו לב, זה לא יעבוד בדפדפן ספארי ואני מניח שגם לא בגירסאות Internet Explorer למינהן.

הצגת עמוד התשלום למרות שעגלת הקניות ריקה

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

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

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

add_filter( 'woocommerce_checkout_redirect_empty_cart', '__return_false' );
add_filter( 'woocommerce_checkout_update_order_review_expired', '__return_false' );

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

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

בגירסאות Yoast הנמוכות מגירסה 11.0 ניתן להסיר את הסכמה באמצעות הפילטר הבא:

function savvy_remove_yoast_json($data){
	$data = array();
	return $data;
}
add_filter('wpseo_json_ld_output', 'savvy_remove_yoast_json', 10, 1);

ועבור גירסאות Yoast הגבוהות מ 11.0 באמצעות פילטר זה:

add_filter( 'wpseo_json_ld_output', '__return_false' );

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

במקום להציג את התאריך המדוייק בו הפוסט שלכם פורסם, אתם יכולים להציג אותו באופן יחסי – ״ לפני 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 תווים בלבד:

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

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

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