Categories
ווקומרס - WooCommerce

התאמה אישית של עמוד מוצר בווקומרס

הצגה של תכונות המוצר מתחת למחיר במקום בלשונית "מידע נוסף":

add_filter( 'woocommerce_product_tabs', 'condless_remove_additional_information_tab', 100, 1 );
function condless_remove_additional_information_tab( $tabs ) {
	unset( $tabs['additional_information'] );
	return $tabs;
}

add_action( 'woocommerce_single_product_summary', 'condless_additional_info_under_add_to_cart', 7 );
function condless_additional_info_under_add_to_cart() {
	global $product;
	if ( $product && ( $product->has_attributes() || apply_filters( 'wc_product_enable_dimensions_display', $product->has_weight() || $product->has_dimensions() ) ) ) {
		wc_display_product_attributes( $product );
	}
}
Categories
וורדפרס

סליידר בוורדפרס

התקן את התוסף.

התאמת התוסף לעברית (CSS):

.owl-carousel,
.bx-wrapper { direction: ltr; }
.owl-carousel .owl-item { direction: rtl; }

הצגת וידאו במסך מלא (CSS):

.wp-video, video.wp-video-shortcode, .mejs-container, .mejs-overlay.load {
	width: 100% !important;
	height: 100% !important;
}
.mejs-container {
	padding-top: 56.25%;
}
.wp-video, video.wp-video-shortcode {
	max-width: 100% !important;
}
video.wp-video-shortcode {
	position: relative;
}
.mejs-mediaelement {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
}
.mejs-controls {
	display: none;
}
.mejs-overlay-play {
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	width: auto !important;
	height: auto !important;
}
Categories
וורדפרס

טופס יצירת קשר בוורדפרס

התקן את התוסף.

עיצוב הטופס (CSS):

.wpcf7-form {
	background: #dcc8a5;
	padding: 10px 20px;
	border: 2px solid #f6efdf;
	border-radius: 7px;
	max-width: 300px;
}
 
.wpcf7-form p {
	color: #4f2a0f;
	margin-bottom: 5px;
}
 
.wpcf7-form input, .wpcf7-form textarea, .wpcf7-form select {
	background: #f6efdf;
	padding: 5px 7px;
	margin: 4px 0 8px 0;
	border: 3px solid #ccb58c;
	color: #4f4f4f;
	border-radius: 7px;
}
 
.wpcf7-form .wpcf7-submit {
	background: #4f2a0f;
	padding: 5px 15px;
	color: #fff;
	min-width: 100px;
}
 
.wpcf7-form input[type="submit"]:hover {
 	background: #000;
}

הגבלת שליחה של טופס אחד לכל כתובת אימייל- השתמש בתוסף ובקוד:

add_filter( 'wpcf7_validate_email*', 'condless_email_validation_filter', 20, 2 );
function condless_email_validation_filter( $result, $tag ) {
	if ( Flamingo_Contact::find( array( 's' => trim( $_POST['your-email'] ) ) ) ) {
		$result->invalidate( $tag, __( 'Sorry, that email address is already used!' ) );
	}
        return $result;
}

שמירת קבצים מצורפים בתיקיה שנגישה רק ליוזרים באתר- התקן את התוסף וצור קובץ htaccess. בתיקייה wpcf7-submissions שבתיקיית ההעלאות עם התוכן:

Options -Indexes
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule ^(.*)$ - [R=403,L]
Categories
וורדפרס

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

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

למה אני רואה אזהרה ברשימה הנפתחת שבהגדרות תוסף?
כתלות בתוספים שהותקנו לפני כן ובטבלאות בבסיס הנתונים שאינן בשימוש, יתכן ותופיע אזהרה בהגדרות תוסף וכשמגיעים להגבלת הפוסטים, תוכל לשמור את ההגדרות ולהחליף הקוד התוסף את השורה "add_action( 'admin_notices', array( $this, 'wp_add_notice' ) );" עם "wp_die()".

Categories
וורדפרס

מהירות וורדפרס

ואמני הג'אז.

שיפור מהירות הוורדפרס:

  • בטל את האפשרות לפינגבאקים וטראקבאקים
  • כווץ את התמונות לפני ההעלאה שלהן
  • בטל את שירותי העדכון של הפוסטים
  • בדוק תהליכים איטיים עם התוסף
  • הגבלת מספר הטיוטות והשמירות האוטומטיות- הוסף לקובץ wp-config.php:
define('AUTOSAVE_INTERVAL', 300 );
define('WP_POST_REVISIONS', false );

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

Categories
וורדפרס

וורדפרס SEO

התאמת וורדפרס למנועי החיפוש:

  • התאם את האתר והתבנית לגלישה מהמובייל
  • הגדר שמבנה הקישורים של הפוסטים והמדיה יווצר לפי המזהה שלהם
  • בחר לקישורים מזהה URL באנגלית
  • שפר את מהירות האתר
  • הפנה את הגולשים לכתובת המתאימה של האתר (עם\בלי https ו-www)
Categories
וורדפרס

פופאפים בוורדפרס

התקן את התוסף.

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

add_filter( 'pum_get_conditions', 'condless_pum_cart_product_quantity_conditions' );
function condless_pum_cart_product_quantity_conditions( $conditions ) {
        return array_merge( $conditions, array(
                'password_page_unlocked' => array(
                        'group'    => __( 'Products', 'woocommerce' ),
                        'name'     => __( 'Products', 'woocommerce' ) . ': ' . __( 'Cart', 'woocommerce' ) . ' ' . __( 'Quantity', 'woocommerce' ),
                        'callback' => 'cart_product_quantity',
                ),
        ) );
}
function cart_product_quantity() {
        foreach ( WC()->cart->get_cart() as $cart_item ) {
                if ( '772' === $cart_item['product_id'] && 3 > $cart_item['quantity'] ) {
                                return true;
                }
        }
        return false;
}

התראה ללקוח בווקומרס שהוא עומד לרוכש מוצר שאינו זמין במלאי כרגע (למוצרים פשוטים)- השתמש באפשרות הקלאסים בכפתור הוספה לסל שבתוסף, צור פופאפ בשם simple_is_on_backorder1 וטרגטינג של All Products, בתוכן הפופאפ הכנס את השורטקוד [current_add_to_cart] והתראה ללקוח על שעומד להוסיף מוצר שאינו זמין כרגע, במידה ומוגדר AJAX בעמוד ארכיון צור פופאפ נוסף עם טריגר Click Open על archive_is_on_backorder1. והאפשרות "do not prevent.." והכנס בתוכן הפופאפ התראה ללקוח על שהוסיף מוצר שאינו זמין כרגע, במידה ולא השתמש בקוד:

add_filter( 'woocommerce_loop_add_to_cart_args', 'condless_add_class', 10, 2 );
function condless_add_class( $args, $product ) {
	if ( $product->is_type( 'simple' ) && $product->is_on_backorder() && ! is_product() && 'no' === get_option( 'woocommerce_enable_ajax_add_to_cart' ) ) {
		$product_id = $product->get_id();
		$args['class'] .= ' popmake-archive_backorder-' . $product_id;
		if ( isset( $product->get_availability()['availability'] ) ) $out = '<div>' . $product->get_availability()['availability'] . '</div>' . '<a href=' . $product->add_to_cart_url() . '>' . $product->add_to_cart_text() . '</a>';
		echo do_shortcode( "[popup id='archive_backorder-" . $product_id . "']" . $out . "[/popup]" );
	}
	return $args;
}
Categories
ווקומרס - WooCommerce

משלוחים בווקומרס

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

add_filter( 'woocommerce_no_shipping_available_html', 'condless_customize_default_message' );
add_filter( 'woocommerce_cart_no_shipping_available_html', 'condless_customize_default_message' );
function condless_customize_default_message( $wpautop ) {
	if ( WC()->countries->get_base_country() != WC()->customer->get_shipping_country() ) {
		$wpautop = __( 'Contact us to get a shipping quote' );
	}
	return $wpautop;
}

הגדרת תשלום מינימלי לרכישה עם משלוח- הזן בשדה עלות שבהגדרות משלוח (החלף את 350 עם הערך הרצוי):

350 - [fee percent="100" max_fee="350"]
Categories
ווקומרס - WooCommerce

התאמה אישית של עמוד חנות בווקומרס

שינוי ברירת מחדל של הופעת סדר המוצרים להופעה לפי שם בסדר יורד:

add_filter( 'woocommerce_get_catalog_ordering_args', 'condless_get_catalog_ordering_args' );
function condless_get_catalog_ordering_args( $args ) {
	$args = array( 'orderby' => 'title', 'order' => 'DESC' );
	return $args;
}

שינוי מפריד טווח המחירים ל-"/":

add_filter( 'woocommerce_format_price_range', 'condless_filter_woocommerce_format_price_range', 10, 3 );
function condless_filter_woocommerce_format_price_range( $price, $from, $to ) {
    $price = sprintf( _x( '%1$s &frasl; %2$s', 'Price range: from-to', 'woocommerce' ), is_numeric( $from ) ? wc_price( $from ) : $from, is_numeric( $to ) ? wc_price( $to ) : $to );
    return $price;
}

הוספת שדה של כמות למוצרים (הפעל את אפשרות כפתור AJAX):

add_filter( 'woocommerce_loop_add_to_cart_link', 'condless_quantity_inputs_for_loop_ajax_add_to_cart', 10, 2 );
function condless_quantity_inputs_for_loop_ajax_add_to_cart( $html, $product ) {
	if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
		$class = implode( ' ', array_filter( array(
			'button',
			'product_type_' . $product->get_type(),
			$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
			$product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
        ) ) );
	$html = sprintf( '%s%s<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>%s',
		'<form class="cart">',
		woocommerce_quantity_input( array(), $product, false ),
		esc_url( $product->add_to_cart_url() ),
		esc_attr( isset( $quantity ) ? $quantity : 1 ),
		esc_attr( $product->get_id() ),
		esc_attr( $product->get_sku() ),
		esc_attr( isset( $class ) ? $class : 'button' ),
		esc_html( $product->add_to_cart_text() ),
		'</form>'
		);
	}
	return $html;
}

add_action( 'wp_footer', 'condless_archives_quantity_fields_script' );
function condless_archives_quantity_fields_script() {
	?>
	<script type='text/javascript'>
		jQuery(function($){
			$(".add_to_cart_button.product_type_simple").on('click', function() { var $button = $(this); $button.attr('data-quantity', $button.parent().find('input.qty').val()); });
			$(document.body).on("adding_to_cart", function() { $("a.added_to_cart").remove(); });
		});
	</script>
	<?php
}
Categories
ווקומרס - WooCommerce וורדפרס

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

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

add_action( 'woocommerce_order_status_completed', 'condless_create_page' );
function condless_create_page( $order_id ) {
	foreach ( wc_get_order( $order_id )->get_items() as $item ) {
		if ( '9' === $item->get_product_id() ) {
			$user_id = wc_get_order( $order_id )->get_user_id();
			$user = new WP_User( $user_id );
			$user->remove_role( 'customer' );
			$user->add_role( 'author' );
			wp_insert_post( array( 'post_title' => 'My New Page', 'post_status' => 'publish', 'post_author' => $user_id, 'post_type' => 'post') );
		}
	}
}