B
B
beefront172017-03-11 12:26:19
PHP
beefront17, 2017-03-11 12:26:19

How to insert attributes, wordpress/woocommerce?

Good afternoon! I have a certain problem ... I
am developing an online store on wordpress / woocomerce, and now there is a need to insert attributes into the product immediately below the price and into the product thumbnail.
I found a code that displays attributes, but copying and pasting it, it seems to me, is not correct.

<?php
/**
 * Product attributes
 *
 * Used by list_attributes() in the products class.
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/single-product/product-attributes.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see 	    https://docs.woocommerce.com/document/template-structure/
 * @author 		WooThemes
 * @package 	WooCommerce/Templates
 * @version     2.1.3
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

$has_row    = false;
$alt        = 1;
$attributes = $product->get_attributes();

ob_start();

?>
    <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>
<?php
if ( $has_row ) {
    echo ob_get_clean();
} else {
    ob_end_clean();
}

Please tell me how to do it right?
Is there a way to put this in a shortcode somewhere?
I would be grateful for any options.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Denis Klepko, 2017-03-11
@beefront17

<?php
global $product; 
// Get product attributes
$custom_attributes = $product->get_attributes();

foreach ( $custom_attributes as $attribute ) {
//Выводим то что нужно
//функция print_r(); в помощь							        
}
?>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question