קטגוריות
הרחבות לווקומרס

הגבלת פוסטים למשתמש

איך להחריג משתמש מסוים מחוקים המוחלים על סוג פוסט מסוים?
עדכן את סוג הפוסט וה-id של המשתמש:

add_filter( 'upl_query', 'upl_unrestrict_user' );
function upl_unrestrict_user( $args ) {
	$post_type = 'post';
	$user_id = 12;
	if ( $post_type === $args['post_type'] && $user_id === $args['author'] ) {
		$args['post_type'] = 'none';
	}
	return $args;
}

איך לגרום לחוקים המוחלים על סוג פוסט מסוים להגביל את סך כל הפוסטים באתר?
עדכן את סוג הפוסט:

add_filter( 'upl_query', 'upl_limit_total_posts' );
function upl_limit_total_posts( $args ) {
	$post_type = 'post';
	if ( $post_type === $args['post_type'] ) {
		$args['author'] = '';
	}
	return $args;
}

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

add_filter( 'upl_query', 'upl_specific_category' );
function upl_specific_category( $args ) {
	$post_type = 'post';
	$category_id = 4;
	if ( $post_type === $args['post_type'] ) {
		$args['cat'] = $category_id;
	}
	return $args;
}

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

add_filter( 'upl_query', 'upl_specific_post_status' );
function upl_specific_post_status( $args ) {
	$post_type = 'post';
	$post_status = [ 'any' ];
	if ( $post_type === $args['post_type'] ) {
		$args['post_status'] = $post_status;
	}
	return $args;
}

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

add_filter( 'upl_query', 'upl_modify_cycle' );
function upl_modify_cycle( $args ) {
	$post_type = 'post';
	$cycle = '3 days ago';
	if ( $post_type === $args['post_type'] ) {
		$args['date_query']['after'] = $cycle;
	}
	return $args;
}

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

איך להגדיר סוגי הודעה שונים לכל משתמש?
השתמש בפילטרים upl_message ו-upl_notice.

איך להוסיף חוק דרך קוד?
עדכן את תפקיד המשתמש, סוג הפוסט, ההגבלה והמחזוריות:

$role = 'author';
$type = 'post';
$limit = '2';
$cycle = 'day';
$formatted_cycle = '1 ' . $cycle . ' ago';
$role_option = get_option( 'upl_user_role' );
$type_option = get_option( 'upl_posts_type' );
$limit_option = get_option( 'upl_num_limit' );
$period_option = get_option( 'upl_period' );
$role_option[] = $role;
$type_option[] = $type;
$limit_option[] = $limit;
$period_option[] = $formatted_cycle;
update_option( 'upl_rules_count', get_option( 'upl_rules_count' ) + 1 );
update_option( 'upl_user_role', $role_option );
update_option( 'upl_posts_type', $type_option );
update_option( 'upl_num_limit', $limit_option );
update_option( 'upl_period', $period_option );

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

for ( $i = 0; $i < get_option( 'upl_rules_count' ); $i++ ) {
	$role = 'subscriber';
	$limit = '3';
	if ( $role === get_option( 'upl_user_role' )[ $i ] ) {
		$limit_option = get_option( 'upl_num_limit' );
		$limit_option[ $i ] = $limit;
		update_option( 'upl_num_limit', $limit_option );
	}
}

איך לאפס את ספירות הפוסטים של משתמש כאשר הוא רוכש מוצר מסוים בווקומרס (יתבצע בסוף היום)?
עדכן את ה-id של המוצר:

add_action( 'woocommerce_order_status_completed', 'upl_update_user_cycle' );
add_filter( 'upl_query', 'upl_users_cycle', 10, 2 );
add_action( 'show_user_profile', 'upl_add_cycle_user_data' );
add_action( 'edit_user_profile', 'upl_add_cycle_user_data' );
add_action( 'personal_options_update', 'upl_save_cycle_user_data' );
add_action( 'edit_user_profile_update', 'upl_save_cycle_user_data' );
add_filter( 'manage_users_columns', 'upl_cycle_user_table' );
add_filter( 'manage_users_custom_column', 'upl_cycle_user_table_row', 10, 3 );

function upl_update_user_cycle( $order_id ) {
	$product_id = '683';
	$order = wc_get_order( $order_id );
	$user_id = $order->get_user_id();
	if ( ! user_can( $user_id, 'manage_options' ) ) {
		foreach ( $order->get_items() as $item ) {
			if ( $product_id == $item->get_product_id() ) {
				if ( empty( get_user_meta( $user_id, 'cycle', true ) ) || get_user_meta( $user_id, 'cycle', true ) <= current_time( 'Y-m-d' ) ) {
					update_user_meta( $user_id, 'cycle', date( 'Y-m-d', strtotime( current_time( 'Y-m-d' ) . ' + 1 day' ) ) );
				}
				break;
			}
		}
	}
}

function upl_users_cycle( $args, $i ) {
	if ( ! user_can( $args['author'], 'manage_options' ) ) {
		$rule_role = '';
		$cycle = get_user_meta( $args['author'], 'cycle', true );
		if ( ( empty( $rule_role ) || $rule_role === get_option( 'upl_user_role' )[ $i ] ) && ! empty( $cycle ) && $cycle <= current_time( 'Y-m-d' ) ) {
			$args['date_query']['after'] = date( 'Y-m-d', strtotime( $cycle . ' - 1 day' ) );
		}
	}
	return $args;
}

function upl_add_cycle_user_data( $user ) {
	if ( current_user_can( 'manage_options' ) ) {
		?>
			<h3><?php esc_html_e( 'User Posts Limit', 'user-posts-limit' ); ?></h3>
			<table class="form-table">
				<tr>
					<th><label for="cycle"><?php esc_html_e( 'Cycle', 'user-posts-limit' ); ?></label></th>
					<td><input type="date" min="1970-01-01" name="cycle" value="<?php echo esc_attr( get_user_meta( $user->ID, 'cycle', true ) ); ?>" class="regular-text" /></td>
				</tr>
			</table>
			<br />
		<?php
	}
}

function upl_save_cycle_user_data( $user_id ) {
	if ( current_user_can( 'manage_options' ) ) {
		update_user_meta( $user_id, 'cycle', sanitize_text_field( $_POST['cycle'] ) );
	}
}

function upl_cycle_user_table( $columns ) {
	$columns['cycle'] = __( 'Cycle', 'user-posts-limit' );
	return $columns;
}

function upl_cycle_user_table_row( $row_output, $column_id_attr, $user_id ) {
	if ( 'cycle' === $column_id_attr ) {
		return get_user_meta( $user_id, 'cycle', true );
	}
	return $row_output;
}

איך לעשות שהחוקים על ה-Listing יחולו על כל Listing type בנפרד בתבנית MyListing?

add_filter( 'upl_query', 'upl_add_meta_query' );
function upl_add_meta_query( $args ) {
	if ( 'job_listing' === $args['post_type'] && isset( $_POST['listing_type'] ) ) {
		$args['meta_query'] = [
			[
				'key'	=> '_case27_listing_type',
				'value'	=> sanitize_text_field( $_POST['listing_type'] )
			]
		];
	}
	return $args;
}
קטגוריות
הרחבות לווקומרס

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

איך לעולם לא להסתיר את שדות הכתובת ברכישות מעל 100?

add_filter( 'haf_hide_address', 'haf_dont_hide_address' );
function haf_dont_hide_address( $hide_enabled ) {
	return 100 <= WC()->cart->get_cart_contents_total() ? false : $hide_enabled;
}

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

קטגוריות
הרחבות לווקומרס

מחיר ליחידה לווקומרס

איך להסיר את התוסף?
כבה את התוסף, על מנת להמשיך לראות את המחיר והכמות של מוצרים שנמכרו ביחידות בהזמנות ישנות:

remove_filter( 'woocommerce_stock_amount', 'intval' );
add_filter( 'woocommerce_stock_amount', 'floatval' );
if ( is_admin() ) {
	add_filter( 'woocommerce_quantity_input_step', function() { return 0.01; } );
}
קטגוריות
הרחבות לווקומרס

ערים באזורי משלוח לווקומרס

אילו שימושים בעלי חנויות עושים עם עיר הלקוח?

  • קביעת מחירי משלוח לפי עיר
  • סטטיסטיקת מכירות לפי עיר (לוח בקרה => ווקומרס => דוחות => מכירות לפי עיר)
  • הצגת מחשבון משלוחים לערים עם השורטקוד [csz_cities]
  • מכירת מוצרים מסוימים לפי עיר (בעזרת תוסף שמגביל לפי מחוז)
  • משלוח מוצרים מסוימים לפי עיר (שיוך המוצרים לקלאס ללא מחיר בשיטת המשלוח, אם סוג החישוב הוא לפי הזמנה על עלות בסיס להיות ריקה גם כן)
  • קביעת מחירי מוצר לפי עיר הלקוח (בעזרת תוסף הנחות עם אפשרות להגדרה לפי מחוז)
  • החלת מיסים לפי עיר (שימוש בקוד העיר בשדה המחוז שבהגדרות מיסים)
  • הפעלת שיטות תשלום / משלוח מסוימות לפי עיר (תוסף להתניית שיטות תשלום / משלוח)
  • משלוח לערים לפי ימים בשבוע (בעזרת תוסף שמאפשר משלוח לפי ימים עם אפשרות להגביל לפי שיטות משלוח)
  • הצגת הערים בעמוד תשלום חיצוני (משיכה של המחוזות עם ווקומרס REST API)
אפשרויות

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

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

כלי הבחירה הקבוצתית

מהו הפורמט הנדרש?
נקודה פסיק (;) בין עיר לעיר. לדוגמא: אשדוד; חיפה; הרצליה

איך להפוך ערים ברשימה לפורמט הנדרש?
החלף את +[\r\n] (ביטוי רגולרי, סימן הפלוס בקצה הימני) עם ; בעזרת ++Notepad.

איך להזין באזור משלוח את כל המיקומים שמוגדר להם מרחק מסוים מעיר עם רשימת מרחקים?
הזן סימן קריאה (!) ומיד לאחריו את קוד העיר, במידת הצורך הוסף מרחק מינימלי ומקסימלי מופרדים בנקודה פסיק (;). לדוגמא לכל הערים הרחוקות עד 50 ק"מ מחיפה: IL4000; 0; 50! (סימן הקריאה בקצה השמאלי).

האם ישנן רשימות ערים מוכנות?

בין חדרה לגדרה:

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

אזורי שילוח חריגים של שירות השליחויות צ'יטה:

אבו בסמה;אבו גווייעד;אבו כף;אבו סנאן;אבו סריחאן;אבו סריחאן (שבט);אבו עבדון;אבו עבדון (שבט);אבו עמאר;אבו עמאר (שבט);אבו עמרה;אבו עמרה (שבט);אבו קוידר;אבו קורינאת;אבו קורינאת (שבט);אבו קרינאת;אבו קרינאת (ישוב);אבו קרינאת (שבט);אבו רביע;אבו רובייעה;אבו רובייעה (שבט);אבו רוקייק;אבו רוקייק (שבט);אבו רקייק;אבו רקיק;אבו תלול;אבטין;אבטליון;אבטן;אביבים;אביגייל;אביגיל;אביטל;אבים;אבירים;אבירם;אבן מנחם;אבן שמואל;אבני איתן;אבני חפץ;אבנת;אבשלום;אגור;אגמון החולה;אדורה;אדירים;אדם;אדמית;אודם;אוהד;אום אל-גנם;אום אל-פחם;אום אל-קוטוף;אום אלגנם;אום בטין;אומן;אומץ;אור הגנוז;אור הנר;אורטל;אורים;אורנים;אורנית;אחוזם;אחוזת ברכפלד;אחזם;אחיה;אטרש;אטרש (שבט);איבטין;איבים;איכסאל;אילון;אילות;אילת;איתמר;איתן;אכסאל;אל-עזאזמה;אל-עריאן;אל-רום;אל סייד;אל עריאן;אל רום;אלהואשלה;אלומה;אלון;אלון מורה;אלון שבות;אלוני אבא;אלוני הבשן;אלונים;אלי-עד;אלי סיני;אלי עד;אלי על;אליאב;אליעד;אליפז;אלמגור;אלמה;אלמוג;אלעזר;אלפי מנשה;אלקוש;אלקנה;אם אל-גנם;אם אל קטוף;אמונים;אמירים;אמן;אמנון;אמץ;אמציה;אניעם;אסד;אסד (שבט);אספר;אעבלין;אפיק;אפרת;אפרתה;ארגמן;ארז;אריאל;ארנית;אש הקודש;אשבול;אשחר;אשכולות;אשל הנשיא;אשלים;אתגר;באקה-גת;באקה אל-גרביה;באר אורה;באר גנים;באר מילכא;באר מילכה;באר מלכה;בארותיים;בארותים;בארי;בבולות;בועיינה;בועיינה-נוגידאת;בוקעאתא;בחן;ביכוריה;ביר אל-מכסור;ביר הדאג;ביר מכסור;ביריה;בית אל;בית אריה;בית גן;בית גוברין;בית הגדי;בית הדר;בית הלוי;בית הערבה;בית חגי;בית חורון;ושוע תעשיה;בית יוסף;בית יתיר;בית לחם;בית לחם בגליל;בית לחם הגלילית;בית ליד;בית ניר;בית עזרא;בית קמה;בית קשת;בית שקמה;ביתר עלית;בני דקלים;בני דרום;בני יהודה;בני נצרים;בני עצמון;מחנה הילה;מחנה מרים;מחנה טלי;מחנה תל נוף;מחנה יפה;מחנה יהודית;מחנה יתיר;מחנה יוכבד;בסמה;בעינה;בעינה נגידאת;בענה;בקעות;בקעת הסיירים;בקעתה;בר יוחאי;ברוכין;ברור חיל;ברוש;ברכה;ברכיה;ברכפלד;ברעם;ברק;ברקן;בת הדר;בת חפר;בת עין;גדידה;גדיידה-מכר;גוליס;גולס;גלגוליה;גנאביב (שבט);גסר א-זרקא;גש (גוש חלב);גת;גדיידה-מכר;גולס;גלגוליה;גנאביב;גאיה;גב ישעיהו;גבולות;גבים;גבע;גבע בנימין;גבעולים;גבעות;גבעות בר;גבעת אהוד;גבעת בר;גבעת הראל;גבעת וש;גבעת זאב;גבעת יואב;גבעת יערים;גבעת ישעיהו;גבעת נילי;גבעת עוז;גבעת עז;גבעת עזר;גבעתי;גברעם;גדות;גדיד;גדיידה;גדיש;גדעונה;גולס;גונן;גורן;גוש חלב;גיאה;גילת;גינות שומרון;גיתה;גיתית;גלאון;גלגוליה;גלגוליה;גלגל;גלעד קבוץ;גן הדרום;גן יאשיה;גן נר;גנאביב;גני מודיעין;גנים;גרופית;גרן;גשור;גשר;גת (באקה במשולש);גת (קיבוץ);גתה;גתית;דבורה;דבוריה;דביר;דבירה;דהילה;דובב;דוחן;דולב;דורות;דחי;דחן;דייר אל-אסד;דייר אל-אסד דיר חנא;דייר חנא;דייר ראפאת;דיר אל-אסד;דיר חנא;דיר ראפאת;דישון;דלב;דלתון;דמיידה;דן;דן גליל עליון;דפנה;דקל;דריגאת;הגושרים;הואשלה;הודיה;הוואשלה;הוואשלה (שבט);הוזייל;הוזייל (שבט);הוזייל שבט;הוזיל;הזורע;הזיל;היוגב;הילה;המעפיל;הר גילה;הר חלוץ;הר עמשא;הרדוף;השומרוני הטוב;ורד יריחו;ורדון;זבארגה;זבארגה (שבט);זבדיאל;זהר;זוהר;זוהרים;זימרת;זיקים;זלפה;זמר;זמרת;זרועה;זרזיר;זרחיה;חואלד;חואלד (שבט);חואלד;חבר;חברון;חגאגרה;חגור;חד-נס;חואלד;חוגייראת (דהרה);חוואלד;חוות גלעד;חוות יזרעם;חולית;חומש;חוסניה;חורה;חורפיש;חורשים;חזון יחזקאל;חיננית;חיספין;חירן;חלמיש;חלף;חלץ;חמאם;חמדיה;חמדת;חמדת (נחל);חמרה;חמש;חמת גדר;חניתה;חננית;חנתון;חספין;חפץ חיים;חצבה;חצרים;חריש;חריש-קציר;חרמש;חרפיש;חשמונאים;טובא-זנגריה;טורעאן;טייבה;טירה;טירת צבי;טל אור;טל מנשה;טללים;טלמון;טמרה;טמרה (יזראל);טנא;טנא עומרים;טרעאן;יאנוח-גת;יבול;יבולה;יד חנה;יד מרדכי;יד נתן;יהל;יובל;יודפת;יוטבתה;יונתן;יושיביה;יזרעאל;יזרעם;יטבתה;ייטב;יכיני;יסיף;יעד;יעל;יעלון;יערה;יפיע;יפית;יפתח;יצהר;יקיר;יראון;ירדנה;ירוחם;ירחיב;ירכא;ישע;יתד;יתיר;כאבול;כאוכב אבו אל-היגא;עוברה;כבול;כדיתה;כוכב;כוכב השחר;כוכב יעקב;כוכב מיכאל;כורזים;כיסופים;כיסרא;כמאנה;כמהין;כנף;כסופים;כסיפה;כסרא;כסרא-סמיע;כעביה-טבאש-חגאגרה;כפאר קאסם;כפר אדומים;כפר אוריה;כפר אורנים;כפר איכסאל;כפר אל עוברה;כפר אלדד;כפר בלום;כפר ברא;כפר גדיידה;כפר גלעדי;כפר דרום;כפר האורנים;כפר הנשיא;כפר זוהרים;כפר זלפה;כפר זמיר;כפר חושן;כפר חרוב;כפר חשן;כפר יאסיף;כפר יובל;כפר יחזקאל;כפר יסיף;כפר יעבץ;כפר יפיע;כפר כסרא;כפר מימון;כפר מרר;כפר נחום;כפר סאלד;כפר סולד;כפר סילבר;כפר סמיע;כפר עזה;כפר עציון;כפר פסוטה;כפר קאסם;כפר קרע;כפר רופין;כפר רות;כפר ריינה;כפר שמאי;כפר תפוח;כפרכפר ברא;כרכום;כרכם;כרם בן זמ;כרם בן זמרה;כרם עמי;כרם שלום;כרמי צור;כרמי קטיף;כרמיה;כרמים;כרמית;כרמל;לבנים;להב;להבות הבשן;להבות חביבה;להבים;לוזית;לוטן;ליבנה;לכיש;לפיד;לקיה;לשם;מ אדומים;מאור;מבוא ביתר;מבוא דותן;מבוא חורון;מבוא חמה;מבואות הגלבוע;מבואות החרמון;מבואות ים;מבואות יריחו;מבועים;מבטחים;מבקיעים;מגד אל-כרום;מגדל שמס;מגאר;מגדו;מגדל עוז;מגדלים;מגידו;מגל;מגן;מגן שאול;מדרך עוז;מדרך עז;מדרשת בן גוריון;מודיעין עילית;מולדה;מולדת;מוסמוס;מועאוויה;אשכול;מרום הגליל;מוקייבלה;מורשת;ניר עקיבא;מושייפרה;מחולה;מחנה בלדד;מחנה חצרים;מחנה נבטים;מחנה סיירים;מחנה עדי;מחנה רמון;מחנה שטים;מטולה;מי עמי;מיגרון;מיטב;מייסר;מיסר;מיצד;מיצר;מירב;מירון;מישור חמד;מישור רותם;מיתר;מיתרים;מכבדא;מכורה;מכחול;מכמורת;מכמרת;מכר;מכרות תמנע;מכתש רמון;מלאה;מלון גלילון;מלילות;מלכיה;מלכישוע;מנוחה;מנוף;מנורה;מנות;מנרה;מנשית זבדה;מסד;מסוף אלנבי;מסילות;מסלות;מסעדה;מסעודין;מסעודין אל-עזאזמה;מע אדומים;מעגלים;מעון;מעיליא;מעיליה;מעין ברוך;מעלה אדומים;מעלה אדמים;מעלה אפרים;מעלה גלבוע;מעלה גלבע;מעלה גמלא;מעלה חבר;מעלה לבונה;מעלה מכמש;מעלה עמוס;מעלה שומרון;מעליא;מעפיל;מפגש הבקעה;מפלסים;מצד;מצדה;מצדות יהודה;מצפה אביב;מצפה אילן;מצפה יריחו;מצפה עדי;מצפה רמון;מצפה שלם;מצר;מרגליות;מרום גולן;מרום הגליל;מרחב עם;מרחבים;מרכז אבשלום;מרכז שפירא;משאבי שדה;משגב;משגב עם;משואה;משואות יצחק;משכיות;משמר הנגב;משמר העמק;משען;מתחם קניאל;מתן;מתקן חולות;מתת;מתתיהו;נאות גולן;נאות הכיכר;נאות הככר;נאות סמדר;נאעורה;נבטים;נבי מוסא;נגידאת;נגבה;נגה;נגוהות;נהורה;נוב;נוגה;נוה;נוה אבות;נוה אור;נוה אטיב;נוה דניאל;נוה זהר;נוה זיו;נוה חלוקים;נוה חריף;נוה מיכאל;נווה;נווה אבות;נווה אור;נווה אטיב;נווה אטיב;נווה דניאל;נווה הרצוג;נווה זוהר;נווה זיו;נווה חריף;נווה מדבר;נווה מיכאל;נווה מנחם;נווה צוף;נועם;נופי נחמיה;נופי פרת;נופים;נוקדים;נורית;נחל אבנת;נחל אלישע;נחל חמדת;נחל נמרוד;נחל עוז;נחל קלע;נחל רותם;נחל רתם;נחל שטים;נחל שיטים;נחל אבנת;נחל אשכולות;נחל חמדת;נחל יתיר;נחל משכיות;נחל נגוהות;נחל נצרים;נחל עוז;נחל עז;נחל צין;נחל קלע;נחל רתם;נחל שטים;נחל שמעה;נחלה;נחליאל;נחניאל;נטועה;נטור;נטע;נטע מרשם;נילי;ניסנית;ניצן;ניצן ב;ניצנה;ניצנה (קהילת חינו;ניצני סיני;ניצני עוז;ניצני שלום;ניצנים;ניר בנים;ניר גלים;ניר דוד-תל עמל;ניר חן;ניר יפה;ניר יצחק;ניר ישראל;ניר משה;ניר עוז;ניר עז;ניר עם;ניר עקיבא;נירים;נירית;נירן;נמרוד;נס הרים;נעלה;נעם;נעמה;נעמי;נערן;נצאצרה;נצאצרה (שבט);נצן;נצנה (קהילת חנוך);נצני סיני;נצני עז;נצנים;נצנים (כפר הנוער);נצר חזני;נצרים;נר יצחק;נריה;נתיב הגדוד;נתיב העשרה;סאגור;סאלם;סאסא;סגולה;סגור;סדום;סואעד-חמרייה;סואעד-כמאנה;סואעד (חמרייה);סואעד כמאנה;סואעד כמאנה (שבט);סואעד שויכי חמריה;סואעד(כמאנה);סוואעד (חמרייה);סוואעד חמיירה;סוסיה;סופה;סחנין;סלמה;סלעית;סמיע;סמר;סנדלה;סנסנה;סעד;סעוה;סער;ספיר;ספסופה;עגר;עגר;עארה;עבדון;עגר;עגר;עדי;עדיעד;עדן;עובדה;עוזה;עוזייר;עולש;עומר;עופרה;עופרים;עוצם;עוקבי;עוקבי (בנו עוקבה);עזוז;עזר;עזריאל;עזריקם;עטאוונה;עטאוונה (שבט);עטאונה;עטרות;עטרות את;עטרת;עידן;עיילבון;עיין השלושה;עיין זיוון;עיין חרוד (איחוד);עילבון;עילוט;עין איברהים;עין אל-אסד;עין בוקק;עין גב;עין גדי;עין הבשור;עין הנציב;עין השלושה;עין זיוון;עין זיון;עין חמד;עין חצבה;עין חרוד (איחוד);עין חרוד (מאוחד);עין יהב;עין כמונים;עין מאהל;עין סהלה;עין עירון;עין צורים;עין קנייא;עין שריד;עין תמר;עינב;עיר אובות;עיר הבהדים;עכברה;עלוט;עלומים;עלי;עלי זהב;עלמה;עלמון;עלש;עמונה;עמיחי;עמיעוז;עמיעז;עמיקם;עמנואל;עמר;ענב;ענתות;עספיא;עפרה;עץ אפרים;עצם;עצמון;עצמון שגב;עראבה;עראמשה;ערד;ערערה;ערערה-בנגב;עשהאל;עתניאל;פארן;פדואל;פני חבר;פני קדם;פסגות;פסוטה;פעמי תשז;פצאיל;פצאל;פרוד;פרזון;פרי גן;צאלים;צבעון;צהר;צוחר;צופים;צופין;צופית;צופר;צוקים;צור הדסה;צור משה;צנדלה;צנדלהן;צריפין;קבועה;קבועה (שבט);קדומים;קדייראת א-צאנע;קדיתא;קדם;קדמת צבי;קדר;קדרים;קדש ברנע;קואעין;קודיראת א-צאנע;קוואעין;קוואעין (שבט);קומראן;קורנית;קטורה;קטיף;קיבוץ אילון;קיבוץ אלון;קיבוץ בית קשת;קיבוץ גת;קיבוץ חניתה;קיבוץ יהל;קיבוץ עין צורים;קידה;קלחים;קליה;קליה;קלנסווה;קלע;קסר א-סיר;קציעות;קציר-חריש;קצר א-סר;קצרין;קריית ארבע;קריית ספר;קרית ארבע;קרית נטפים;קרית ספר;קרני שומרון;קרע;קרע (כפר);קשת;ראס אל-עין;ראס עלי;ראש צורים;רבבה;רביבים;רגבים;רהט;רווחה;רוויה;רוחה;רוחמה;רויה;רומאנה;רומת הייב;רועי;רותם;רותם (נחל);רחוב;רחלים;ריחאניה;ריחן;ריחניה;ריינה;רימונים;רינה;רם-און;רם און;רמונים;רמות;רמות נפתלי;רמת חובב;רמת מגישימים;רמת מגשימים;רמת נגב;רמת צבי;רעים;רפיח ים;רקפת;רשפ לא לשימוש;רשפים;רתמים;שא-נור;שאר ישוב;שבות רחל;שבטה;שבי דרום;שבי שומרון;שבלי;שבלי - אום אל-גנם;שבלי אום אל גנם;שבלים;שגב-שלום;שגב שלום;שגב/עצמון;שגור;שדה אליהו;שדה בוקר;שדה דוד;שדה יואב;שדה יצחק;שדה ניצן;שדה נצן;שדה עוזיהו;שדה עזיהו;שדה צבי;שדות נגב;שדי אברהם;שדי חמד;שדי תרומות;שדמות מחולה;שובה;שובל;שומרה;שומריה;שוקדה;שזפון;שחר;שחרות;שיבולים;שיבטה;שיבלי;שיזף;שיזפון;שיח דנון;שיטים;שייח דנון;שילה;שכניה;שלווה;שלווה במדבר;שלוחות;שלומית- דרום;שלפים;שמיר;שמעה;שמעה (נחל);שמרת;שני;שניר;שעב;שעל;שער אפרים;שער בנימין;שער הנגב;שער מנשה;שערי תקוה;שערי תקווה;שפיר;שפר;שפרעם;שקד;שקף;שרשרת;שתולה;שתולים;תאשור;תדהר;תומר;תושיה;תל חי;תל עמל;תל ערד;תל קציר;תל שבע;תל תאומים;תלם;תלמי אליהו;תלמי בילו;תלמי בילו;תלמי יוסף;תלמי יפה;תלמים;תמנע;תמר {מעצ};תמרה;תקומה;תקוע;תראבין א-צאנע;תראבין א-צאנע יישוב
אינטגרציות

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

מדוע במערכות צד ג' שהטמעתי באתר שדה העיר ריק או שהסליקה נכשלת?
יהיה עליך לשנות את הדרך בה המערכת מושכת את שדה העיר (חיוב/משלוח) למדינות עליהן החלת את התוסף, מ-$_POST['billing_city'] ל-$order->get_billing_city(). לחלופין, הוסף לאקשן woocommerce_checkout_create_order פעולה שמעתיקה את $order->get_billing_city() אל $_POST['billing_city'].

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

איך למנוע טעינה של הערים בעמודי התוסף WCFM?

add_filter( 'csz_enable_cities', 'csz_disable_cities_wcfm' );
add_filter( 'woocommerce_states', 'csz_load_states_wcfm', 9999 );

function csz_disable_cities_wcfm( $cities_enabled ) {
	return isset( $_GET['store-setup'] ) && 'yes' === $_GET['store-setup'] || false !== strpos( $_SERVER['REQUEST_URI'], 'store-manager' ) ? false : $cities_enabled;
}

function csz_load_states_wcfm( $states ) {
	if ( isset( $_GET['store-setup'] ) && 'yes' === $_GET['store-setup'] || false !== strpos( $_SERVER['REQUEST_URI'], 'store-manager' ) ) {
		foreach ( get_option( 'wc_csz_countries_codes' ) as $country_code ) {
			include( WP_PLUGIN_DIR . '/cities-shipping-zones-for-woocommerce/i18n/cities/' . $country_code . '.php' );
			if ( $country_states ) {
				$states[ $country_code ] = $country_states;
			}
		}
	}
	return $states;
}

איך לבצע אינטגרציה עם התוסף Food Online Premium?
מנע ממחוז המשתמש מלהיטען בפונקציה config_default_customer_address והוסף לשורה 836 בקובץ class-fdoe-del.php (עדכן את הערים שמצריכות שינוי שם):

if ( is_plugin_active( 'cities-shipping-zones-for-woocommerce/cities-shipping-zones-for-woocommerce.php' ) && in_array( $country, get_option( 'wc_csz_countries_codes' ) ) ) {
	$cities = [
		'Talin' => 'Tallinn',
	];
	if ( isset( $cities[ $_POST['city'] ] ) ) {
		$_POST['city'] = $cities[ $_POST['city'] ];
	}
	$state = array_search( _x( wc_clean( $_POST['city'] ), "{$country}-cities", 'cities-shipping-zones-for-woocommerce' ), WC()->countries->get_states( $country ) );
	$_POST['city'] = '';
}
רשימת ערים

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

איך לשנות שמות של ערים?
עדכן את קודי המדינות, וקודי ושמות הערים (לא מתאים לשימוש עם אפשרות הפילטרים):

add_filter( 'csz_cities', 'csz_modify_cities' );
function csz_modify_cities( $states ) {
	$states['AT']['AT90001'] = 'Vienna';
	return $states;
}

איך להסיר ערים כלשהן מהרשימה?
עדכן את קוד המדינה וקודי הערים:

add_filter( 'csz_cities', 'csz_remove_cities' );
function csz_remove_cities( $states ) {
	$country_code = 'AT';
	$unnecessary_cities = [ 'AT10101', 'AT10201', 'AT10301' ];
	foreach ( $unnecessary_cities as $city ) {
		unset( $states[ $country_code ][ $city ] );
	}
	return $states;
}

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

add_filter( 'csz_cities', 'csz_set_cities' );
function csz_set_cities( $states ) {
	$country = 'AT';
	$cities = [ 'AT10101', 'AT10201', 'AT10301' ];
	$new_states = [];
	foreach ( $cities as $city ) {
		if ( isset( $states[ $country ][ $city ] ) ) {
			$new_states[ $city ] = $states[ $country ][ $city ];
		}
	}
	$states[ $country ] = $new_states;
	return $states;
}

איך להסיר מהרשימה את כל הערים השייכות למחוזות מסוימים?
עדכן את קודי המחוזות:

add_filter( 'csz_states', 'csz_remove_states_cities' );
function csz_remove_states_cities( $states ) {
	$unnecessary_states = [ 'EE001', 'EE004', 'EE006' ];
	foreach ( $unnecessary_states as $state_code ) {
		if ( isset( $states[ $state_code ] ) ) {
			unset( $states[ $state_code ] );
		}
	}
	return $states;
}

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

add_filter( 'csz_cities', 'csz_split_cities' );
function csz_split_cities( $states ) {
	$country_code = 'AT';
	$city_code = 'AT90001';
	$sub_cities = [ __( 'Northern', 'woocommerce' ), __( 'Southern', 'woocommerce' ) ];
	$count = 101;
	foreach ( $sub_cities as $sub_city ) {
		$states[ $country_code ][ $city_code . $count ] = $states[ $country_code ][ $city_code ] . ' - ' . $sub_city;
		$count++;
	}
	unset( $states[ $country_code ][ $city_code ] );
	return $states;
}

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

add_filter( 'csz_enable_custom_city', '__return_true' );
שורטקוד

איך להציג את הודעת המשלוח לצמיתות במחשבון המשלוחים של הערים?
לא תואם לחנויות בינלאומיות:

add_filter( 'wp_footer', 'csz_custom_shipping_message' );
function csz_custom_shipping_message() {
	?>
		<script type="text/javascript">
		jQuery( function( $ ) {
			$( document ).on( 'zone_matched', function( event, response ) {
				$( '#shipping_state-description' ).remove();
				if ( ! $( '#shipping_message' ).length ) {
					$( '#shipping_state_field' ).append( '<span id="shipping_message">response</span>' );
				}
				$( '#shipping_message' ).text( response );
				$( '#shipping_message' ).css( { 'color':'black', 'background-color':'yellow' } );
			} );
		} );
		</script>
	<?php
}
עמלת מרחק

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

האם בתוסף ישנן רשימות מרחקים מובנות?
לישראל מספר ערים עם רשימת מרחקים מובנית בעברית.

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

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

איך עלי לארגן רשימת מרחקים לעיר?
השתמש כאינדקס בקודים של המיקומים או בשמות שלהם (כפי שמופיעים בלוח הבקרה ועדכן את key_format$), ודא שמוגדר מרחק גם לעיר עצמה, על המרחקים להיות גדולים מ-0.

ווקומרס REST API

השתמש במחלקה:

add_filter( 'woocommerce_rest_api_get_rest_namespaces', 'wc_states_api' );
function wc_states_api( $controllers ) {
	$controllers['wc/v3']['data-states'] = 'WC_REST_Data_States_Controller';
	return $controllers;
}

class WC_REST_Data_States_Controller extends WC_REST_Data_Controller {
	protected $namespace = 'wc/v3';
	protected $rest_base = 'data/states';
	function register_routes() {
		register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<state>[\w-]+)/zone', [
			'methods'		=> 'GET',
			'callback'		=> [ $this, 'get_zone' ],
			'args'			=> [ 'state' => [ 'description' => __( 'State / County', 'woocommerce' ), 'type' => 'string' ] ],
			'permission_callback'	=> [ $this, 'get_items_permissions_check' ],
		] );
		register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P<state>[\w-]+)/state', [
			'methods'		=> 'GET',
			'callback'		=> [ $this, 'get_state' ],
			'args'			=> [ 'state' => [ 'description' => __( 'State / County', 'woocommerce' ), 'type' => 'string' ] ],
			'permission_callback'	=> [ $this, 'get_items_permissions_check' ],
		] );
	}
	function get_zone( $data ) {
		return [ 'id' => wc_get_shipping_zone( [ 'destination' => [ 'country' => substr( $data['state'], 0, 2 ), 'state' => $data['state'], 'postcode' => '' ] ] )->get_zone_id() ];
	}
	function get_state( $data ) {
		foreach ( get_option( 'wc_csz_countries_codes' ) as $country_code ) {
			$country_cities = '';
			$country_states = '';
			include( WP_PLUGIN_DIR . '/cities-shipping-zones-for-woocommerce/i18n/cities/' . $country_code . '.php' );
			if ( isset( $country_states ) ) {
				foreach ( $country_states as $state_code => $state_name ) {
					if ( isset( $country_cities[ $state_code ][ $data['state'] ] ) ) {
						return $country_states[ $state_code ];
					}
				}
			}
		}
		return false;
	}
}

איך לקבל את אזור המשלוח אליו עיר כלשהי שייכת (במדינות עליהן חל התוסף)?

/wp-json/wc/v3/data/states/<city_code>/zone

איך לקבל את המחוז אליו שייכת עיר כלשהי (במדינות עליהן חל התוסף)?

/wp-json/wc/v3/data/states/<city_code>/state
הסרת התוסף / מדינות / מיקומים
  • הגדרות אזורי משלוח בווקומרס: הסר את המיקומים (תוכל להיעזר בכלי העריכה הקבוצתית)
  • הגדרות תוסף: הסר את המדינות
  • הגדרות ווקומרס: עדכן את כתובת החנות
  • משתמשים: המר/מחק את ערכי שדה המחוז במשתמשים שנוצרו/שעודכנו בזמן שהתוסף היה מוחל על המדינות שהם שייכים אליהם
  • תוספים: כבה ומחק את התוסף
קטגוריות
הרחבות לווקומרס

תכונות ברירת מחדל לווקומרס

איך להחריג תכונה מסוימת מחישוב תכונת הברירת המחדל על פי המלאי?
עדכן את ה-id של התכונה:

add_filter( 'daw_max_variations', 'exclude_attribute', 10, 2 );
function exclude_attribute( $max_variations, $attribute ) {
	$excluded_attribute = 25;
	return $excluded_attribute === $attribute['id'] ? 0 : $max_variations;
}

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

add_filter( 'first_attribute_checkbox', 'daw_first_attribute_restrict_products', 10, 2 );
function daw_first_attribute_restrict_products( $first_attribute_checkbox, $product ) {
	$max_attributes = 3;
	return $max_attributes < count( $product->get_attributes() ) ? 'no' : $first_attribute_checkbox;
}

איך להחריג מוצר מסוים מכל חישובי תכונות ברירת המחדל?
עדכן את ה-id של המוצר:

add_filter( 'daw_include_product', 'exclude_product', 10, 2 );
function exclude_product( $included, $product ) {
	$excluded_product = 71;
	return $excluded_product === $product->get_id() ? false : $included;
}
קטגוריות
הרחבות לווקומרס

אפשרויות מתקדמות לווקומרס

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

add_filter( 'aow_orders', 'aow_order_status' );
function aow_order_status( $args ) {
	$args['status'] = 'on-hold';
	return $args;
}