Support » Plugin: Woo Zap Mirror » סטאפ ראשוני

  • Resolved balvan64

    (@balvan64)



    היי עידו,
    תודה על העבודה שלך.

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

    אני שם לב שהמראה הולכת לפי קטגוריות ומתחת מוצרים.
    בוא נגיד שיש לי קטגוריות: “אוטו”, “קטנוע”, “אדום”, “כחול”.
    ויש לי מוצר שהוא אוטו כחול.

    אם אני אעשה ב-“Hide Categories” ב-Settings סימון V על אוטו, זה יעלים את האוטו הכחול? או שהוא עדיין יהיה תחת “כחול” במראה? (מקווה שהשאלה מובנת).

Viewing 5 replies - 1 through 5 (of 5 total)
  • Plugin Author Ido Friedlander

    (@idofri)

    Regarding your first question:
    It’s not possible to fully automate the process and fetch all product properties from WooCommerce default fields, because not all of them exists (e.g., DELIVERY_TIME, MANUFACTURER, WARRANTY..). That’s the reason I’ve decided to leave it as-is, for manual data insertion.

    Having said that, version 1.3 onwards, allows you to programmatically solve this matter by overriding the XML properties on-the-go.
    For example, by adding the following code in your theme’s functions.php file, you will semi-automate the fetching of some properties from your products metadata:

    
    add_action( 'wc_zap_mirror_xml_node', function( &$node, $product ) {
    	$node->PRODUCT_NAME		= $product->get_name();
    	$node->DETAILS			= $product->get_description();
    	$node->CATALOG_NUMBER		= $product->get_sku();
    	$node->PRICE			= $product->get_price();
    }, 10, 2 );
    

    Regarding your second question, if I understood it properly – the answer is yes.

    Hello,
    I’ve tested it, and if I’m hiding one of the two categories a product belongs to, it will still show up under the second one. That kind of defeats the purpose.

    The Hide feature just hides the “folder” of that category, but the products inside will still show up under other categories that are not hidden.

    Also, this mean a product can show up many many times, once under each category it belongs to. The blue car will show once under “blue”, and once under “cars”, double listing. It seems the one and only way to hide a product is on the edit product interface.

    As it will takes many days to manually fill all of the products information, how can I set the default setting of a product to “hide”? so that I can manually unhide the products I’ve already filled one by one as I go

    • This reply was modified 10 months, 3 weeks ago by  balvan64.
    Plugin Author Ido Friedlander

    (@idofri)

    Hiding categories will – hide categories
    Hiding products will – hide products.
    Kinda self-explanatory.

    Mirror-site is A mirror of your site. you should ask yourself – Can A product appear on multiple categories on my website? The answer is Yes, it can. Why should the mirror-site behavior be any different?

    As for your final question, You could alter the products query to accomplish that.
    By using the following filter-hook, only products that has A value for A given field (e.g., Product Name) – will appear on the mirror-site:

    add_filter( 'wc_zap_mirror_wp_query', function( $args ) {
    	$args['meta_query'] = array(
    		'relation' => 'AND',
    		array(
    			'key'     	=> '_wc_zap_product_name',
    			'value'		=> '',
    			'compare' 	=> '!='
    		),
    		array(
    			'relation' => 'OR',
    			array(
    				'key'     	=> '_wc_zap_disable',
    				'value'		=> 'yes',
    				'compare' 	=> '!='
    			),
    			array(
    				'key' 		=> '_wc_zap_disable',
    				'compare' 	=> 'NOT EXISTS'
    			)
    		)
    	);
    	return $args;
    } );

    Hope it helps.

    Hey, I’ve modified your code a bit, maybe will be useful for somebody

    add_action( 'wc_zap_mirror_xml_node', function( &$node, $product ) {
    	$node->PRODUCT_NAME = $product->get_meta( '_wc_zap_product_name' ) ? $product->get_meta( '_wc_zap_product_name' ): $product->get_name();
    	$node->DETAILS = $product->get_meta( '_wc_zap_product_description' ) ? $product->get_meta( '_wc_zap_product_description' ) : $product->get_description();
    	$node->CATALOG_NUMBER = $product->get_meta( '_wc_zap_product_catalog_number' ) ? $product->get_meta( '_wc_zap_product_catalog_number' ) : $product->get_sku();
    	$node->PRICE = $product->get_meta( '_wc_zap_product_price' ) ? $product->get_meta( '_wc_zap_product_price' ) : $product->get_price();
    }, 10, 2 );
    • This reply was modified 9 months, 1 week ago by  vltansky.
    Plugin Author Ido Friedlander

    (@idofri)

    @vltansky, your code is wasteful.
    The filter-action is executed after the meta has already being fetched.
    If you wanna make sure you’re not overwriting the existing values, use it like this:

    
    add_action( 'wc_zap_mirror_xml_node', function( &$node, $product ) {
    	$node->PRODUCT_NAME		= $node->PRODUCT_NAME ? $node->PRODUCT_NAME : $product->get_name();
    	$node->DETAILS			= $node->DETAILS ? $node->DETAILS : $product->get_description();
    	$node->CATALOG_NUMBER	= $node->CATALOG_NUMBER ? $node->CATALOG_NUMBER : $product->get_sku();
    	$node->PRICE			= $node->PRICE ? $node->PRICE :$product->get_price();
    }, 10, 2 );
    
Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘סטאפ ראשוני’ is closed to new replies.