Задать вопрос
Ответы пользователя по тегу WooСommerce
  • Вывод атрибутов в Woocommerce для незарегестрированынх пользоватлей?

    Andrey_Tech
    @Andrey_Tech Автор вопроса
    Да, это функция
    add_action('init', 'my_theme_hide_price_not_authorized');
    function my_theme_hide_price_not_authorized() {
      if ( !is_user_logged_in() ) {
        add_filter( 'woocommerce_attribute', 'my_theme_hide_attribute');
      }
    }


    работает корректно, она скрывает атрибуты, только все сразу
    То есть не зарегистрированные пользователи должны видеть только некоторые атрибуты, все остальные для них должны быть скрыты

    вот код product_attributes.ph, по выводу атрибутов:
    <table class="shop_attributes">
    
    	<?php if ( $product->enable_dimensions_display() ) : ?>
    
    		<?php if ( $product->has_weight() ) : $has_row = true; ?>
    			<tr class="<?php if ( ( $alt = $alt * -1 ) === 1 ) echo 'alt'; ?>">
    				<th><?php _e( 'Weight', 'woocommerce' ) ?></th>
    				<td class="product_weight"><?php echo wc_format_localized_decimal( $product->get_weight() ) . ' ' . esc_attr( get_option( 'woocommerce_weight_unit' ) ); ?></td>
    			</tr>
    		<?php endif; ?>
    
    		<?php if ( $product->has_dimensions() ) : $has_row = true; ?>
    			<tr class="<?php if ( ( $alt = $alt * -1 ) === 1 ) echo 'alt'; ?>">
    				<th><?php _e( 'Dimensions', 'woocommerce' ) ?></th>
    				<td class="product_dimensions"><?php echo $product->get_dimensions(); ?></td>
    			</tr>
    		<?php endif; ?>
    
    	<?php endif; ?>
    
    	<?php foreach ( $attributes as $attribute ) :
    		if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) ) {
    			continue;
    		} else {
    			$has_row = true;
    		}
    		?>
    		<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
    			<th><?php echo wc_attribute_label( $attribute['name'] ); ?></th>
    			<td><?php
    				if ( $attribute['is_taxonomy'] ) {
    
    					$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
    					echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    
    				} else {
    
    					// Convert pipes to commas and display values
    					$values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
    					echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    
    				}
    			?></td>
    		</tr>
    	<?php endforeach; ?>
    
    </table>


    я не знаю как сделать переопределение,я раньше такого просто не делал
    Ответ написан