• Как ограничить количество атрибутов выводимых в каталог товара?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Я не знаю, как работает ваш woocommerce show attribute

    Но вот примерно так работает стандартная woo функция чуть подпилена для того, что бы вы могли задать сколько атрибутов надо. И сразу добавлен вывод.

    так делать конечно не стоит с точки зрения красоты кода, но насколько я понимаю, вам на это наплевать плюс все видно сразу в одном месте, при необходимости увидев как оно работает, можете сделать как нравится

    function wpp_get_product_attributes( $product = null, $count = null ) {
    
    		if ( empty( $product ) ) :
    			global $product;
    		endif;
    
    		$attributes = array_filter( $product->get_attributes(), 'wc_attributes_array_filter_visible' );
    
    		$i = 1;
    		foreach ( $attributes as $attribute ) {
    
    			if ( ! empty( (int) $count ) && (int) $count > $i ) {
    				break;
    			}
    
    			$values = [];
    
    			if ( $attribute->is_taxonomy() ) {
    				$attribute_taxonomy = $attribute->get_taxonomy_object();
    				$attribute_values   = wc_get_product_terms( $product->get_id(), $attribute->get_name(), [ 'fields' => 'all' ] );
    
    				foreach ( $attribute_values as $attribute_value ) {
    					$value_name = esc_html( $attribute_value->name );
    
    					if ( $attribute_taxonomy->attribute_public ) {
    						$values[] = '<a href="' . esc_url( get_term_link( $attribute_value->term_id, $attribute->get_name() ) ) . '" rel="tag">' . $value_name . '</a>';
    					} else {
    						$values[] = $value_name;
    					}
    				}
    			} else {
    				$values = $attribute->get_options();
    
    				foreach ( $values as &$value ) {
    					$value = make_clickable( esc_html( $value ) );
    				}
    			}
    
    			$product_attributes[ 'attribute_' . sanitize_title_with_dashes( $attribute->get_name() ) ] = [
    				'label' => wc_attribute_label( $attribute->get_name() ),
    				'value' => apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values ),
    			];
    
    			$i ++;
    		}
    
    		$product_attributes = apply_filters( 'woocommerce_display_product_attributes', $product_attributes, $product );
    
    		?>
    		<table class="woocommerce-product-attributes shop_attributes">
    			<?php foreach ( $product_attributes as $product_attribute_key => $product_attribute ) : ?>
    				<tr class="woocommerce-product-attributes-item woocommerce-product-attributes-item--<?php echo esc_attr( $product_attribute_key ); ?>">
    					<th class="woocommerce-product-attributes-item__label"><?php echo wp_kses_post( $product_attribute['label'] ); ?></th>
    					<td class="woocommerce-product-attributes-item__value"><?php echo wp_kses_post( $product_attribute['value'] ); ?></td>
    				</tr>
    			<?php endforeach; ?>
    		</table>
    
    
    		<?php
    	}
    Ответ написан
    3 комментария
  • Как в WP интегрировать Woocommerce c плагином Shiptor?

    @vslobodyan
    А вы писали им в поддержку?
    Что они отвечают?
    Ответ написан
    Комментировать