There is a single product page template. And inside there it display all the product details (title, price, attributes, .etc) under this “do_action” code :
<?php
/**
* woocommerce_single_product_summary hook
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
*/
do_action( 'woocommerce_single_product_summary' );
?>
What if I want to display only the product attribute on some other template page. What “do_action” parameter I need to pass?
I tried “do_action( ‘woocommerce_template_single_meta’ );”, but nothing came up.
I believe the “@hooked ” are not alternative hooks, but are optional arguments that can be used with the hook. eg.
do_action( a_hook, optional_argument(s) );
Try
do_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta');
Doesn’t work. It still shows all the product hooks.
Or is there any pre-define function in woocommerce to display just the product attributes ?
Sorry, but I don’t know. I am not familiar with the woocommerce plugin.
No error messages in your dev tools console?
Thanks. I didn’t expect there would be, but best to cover the bases just in case.
Since you aren’t getting any PHP errors, I think it must be something wrong with single meta. You should have a file at
plugins/woocommerce/templates/single-product/meta.php
If you look at that do you see anything obviously wrong with its code?
Nothing wrong though. But I just noticed that the meta.php doesn’t call products attribute.
if ( ! defined( ‘ABSPATH’ ) ) {
exit; // Exit if accessed directly
}
global $post, $product;
$cat_count = sizeof( get_the_terms( $post->ID, ‘product_cat’ ) );
$tag_count = sizeof( get_the_terms( $post->ID, ‘product_tag’ ) );
?>
<?php do_action( 'woocommerce_product_meta_start' ); ?>
<?php if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) : ?>
<span class="sku_wrapper"><?php _e( 'SKU:', 'woocommerce' ); ?> <span class="sku" itemprop="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : __( 'N/A', 'woocommerce' ); ?></span></span>
<?php endif; ?>
<?php echo $product->get_categories( ', ', '' . _n( 'Category:', 'Categories:', $cat_count, 'woocommerce' ) . ' ', ' ' ); ?>
<?php echo $product->get_tags( ', ', '' . _n( 'Tag:', 'Tags:', $tag_count, 'woocommerce' ) . ' ', ' ' ); ?>
<?php do_action( 'woocommerce_product_meta_end' ); ?>
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();
}
This is from product-attributes.php . If you see, the product attributes are display in a table. I want to show it at some place/page. Can’t figure out how to call and display it…
system
Closed
September 20, 2018, 11:37am
9
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.