Задать вопрос
  • Как получить куки в локальном приложении Битрикс 24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Никак.

    Ориентируйтесь только на данные которые пришлет вам Битрикс24 при открытии вашего приложения (смотрите данные запроса) - там есть токен пользователя открывающего приложение, адрес портала и другая полезная информация.
    Ответ написан
    4 комментария
  • Как правильно вставить код в файл functions.php?

    Punkie
    @Punkie
    но статья 2-ух летней давности


    И у вордпресса, и у вуукоммерца уже столько обновлений вышло за это время (включая мажорные), что ваш код скорее всего просто уже не совместим с текущей версией wp/wc.

    Учите php/js, открывайте лог ошибок и правьте код под сегодняшние версии окружения.

    Нет? Ну тогда на фриланс.
    Ответ написан
    1 комментарий
  • Как осуществить массовую установка изображений по атрибуту для каждой вариации?

    @IgorNoskov Автор вопроса
    Не нашёл нигде ответа, поэтому написал небольшой снипет, который решает эту проблему. Пригодится в тех случаях, когда создаётся много вариаций и для каждой нужно задать своё изображение. К примеру, если сейчас у меня на сайте дверь имеет 12 размеров и 10 цветов, получается 120 вариаций. Ранее приходилось устанавливать для каждой из 120 вариаций своё изображение. Затрата времени - до 10 минут на каждый товар! Теперь тоже самое можно сделать, примерно, за 30 секунд!

    Инструкция:
    1. Вставляем код в functions.php вашей темы.
    1. Если код вставлен верно, в поле variation_actions появятся дополнительные варианты, на основе атрибутов, выбранных для вариаций.
    2. Выбираем нужный атрибут, нажимает "Применить".

    5c91c619eb2c44fb9278884aecc1e74b.png

    3. В открывшемся окне загружаем изображение с локального диска или выбираем из библиотеки, а затем жмём "Задать изображение для вариаций с выбранным атрибутом".

    4819a0eb833c4eec993ea22fe9e8ca40.png

    4. Повторяем операцию для каждого выбранного атрибута.

    Код:
    add_action( 'woocommerce_variable_product_bulk_edit_actions', 'set_image_by_attributes', 10); 
    
    function set_image_by_attributes() {
    	global $post, $woocommerce;
     
        $attributes = maybe_unserialize( get_post_meta( $post->ID, '_product_attributes', true ) );
    	
    	$out = "";
    
    	foreach( $attributes as $attribute ) {
    		if ($attribute['is_variation']) {
    
    			$out .= '<optgroup label="Изображение по aтрибуту «' . wc_attribute_label($attribute['name']) . '»">';
    			
    				foreach( wc_get_product_terms( $post->ID, $attribute['name'] ) as $attribute_value ){
    					$term = get_term_by('name', $attribute_value, $attribute['name']);
    					$out .= '<option value="set_image_attribute" data-attribute-name="' . $attribute['name'] . '" data-attribute-value="' . $term->slug . '">' . $attribute_value . '</option>';
    				}
    				
    			$out .= '</optgroup>';
    		}
    	}
    	?>
    	<script>
    		jQuery('.wc-metaboxes-wrapper').on('click', 'a.bulk_edit', function(event) {
    			var field_to_edit = jQuery('select#field_to_edit').val();
    
    			if ( field_to_edit == 'set_image_attribute' ) {
    				var input_tag = jQuery('select#field_to_edit :selected').attr('rel') ? jQuery('select#field_to_edit :selected').attr('rel') : 'input';
    				
    				var mediaUploader,
    					data = {};
    					
    				data.attribute_name = jQuery('select#field_to_edit :selected').data('attribute-name');
    				data.attribute_value = jQuery('select#field_to_edit :selected').data('attribute-value');
    				
    				if (mediaUploader) {
    					mediaUploader.open();
    					return;
    				}
    
    				mediaUploader = wp.media.frames.file_frame = wp.media({
    					title: 'Выберите изображение',
    					button: {
    					text: 'Задать изображение для вариаций с выбранным атрибутом'
    				}, multiple: false });
    
    				mediaUploader.on('select', function() {
    					var attachment = mediaUploader.state().get('selection').first().toJSON();
    					data.attachment_id = attachment.id;
    					jQuery( '#woocommerce-product-data' ).block({
    						message: null,
    						overlayCSS: {
    							background: '#fff',
    							opacity: 0.6
    						}
    					});
    					
    					jQuery.ajax({
    						url: woocommerce_admin_meta_boxes_variations.ajax_url,
    						data: {
    							action:       'woocommerce_bulk_edit_variations',
    							security:     woocommerce_admin_meta_boxes_variations.bulk_edit_variations_nonce,
    							product_id:   <?php echo $post->ID; ?>,
    							product_type: jQuery( '#product-type' ).val(),
    							bulk_action:  field_to_edit,
    							data:         data
    						},
    						type: 'POST',
    						success: function(data) {
    							jQuery( '.variations-pagenav .page-selector' ).val( 1 ).first().change();
    						}
    					});
    					
    					jQuery( '#woocommerce-product-data' ).unblock();
    
    				});
    				
    				mediaUploader.open();
    				
    				return false;
    			}
    		});
    	
    	</script>
    	<?php
    	
    	echo $out;
    	
    }
    
    add_action( 'woocommerce_bulk_edit_variations_default', 'action_woocommerce_bulk_edit_variations_default', 10, 4 );
    
    function action_woocommerce_bulk_edit_variations_default( $bulk_action, $data, $product_id, $variations ) {
    	
        if ($bulk_action == 'set_image_attribute') {
    		
    		foreach($variations as $variation) {
    			$attribute_name = "attribute_" . $data["attribute_name"];
    			$meta = get_post_meta($variation);
    			
    			if( $meta[$attribute_name][0] === $data["attribute_value"]) {
    				set_post_thumbnail( $variation, $data["attachment_id"] );
    			}
    		}
    	}
    	
    	exit;
    };
    Ответ написан
    2 комментария