/**
* Snippet Name: Add Product Attributes Column
* Snippet Author: coding-bunny.com
* Description: Adds a custom "Attributes" column to the WooCommerce product table.
*/
// Add a custom column to the WooCommerce product table
function cb_add_attributes_column($columns) {
$columns['cb_attributi'] = 'Attributes'; // Add "Attributes" column
return $columns;
}
add_filter('manage_edit-product_columns', 'cb_add_attributes_column');
// Populate the custom "Attributes" column with data
function cb_populate_attributes_column($column, $post_id) {
if ($column == 'cb_attributes') {
$product = wc_get_product($post_id); // Get the product object
if (!$product) {
echo esc_html('-'); // Display a placeholder if the product is invalid
return;
}
$attributes = $product->get_attributes(); // Get product attributes
if (!empty($attributes)) {
foreach ($attributes as $attribute) {
$attribute_name = wc_attribute_label($attribute->get_name()); // Get attribute label
// Check if the attribute is taxonomy-based or custom
if ($attribute->is_taxonomy()) {
// Get taxonomy terms associated with the attribute
$attribute_values = wc_get_product_terms($post_id, $attribute->get_name(), array('fields' => 'names'));
$attribute_options = implode(', ', array_map('esc_html', $attribute_values)); // Sanitize and implode terms
} else {
// Get custom attribute options
$attribute_options = implode(', ', array_map('esc_html', $attribute->get_options())); // Sanitize options
}
// Output attribute name and values
echo '<p><strong>' . esc_html($attribute_name) . ':</strong> ' . $attribute_options . '</p>';
}
} else {
echo esc_html('-'); // Display a placeholder if no attributes exist
}
}
}
add_action('manage_product_posts_custom_column', 'cb_populate_attributes_column', 10, 2);
Add Product Attributes Column
Adds a custom "Attributes" column to the WooCommerce product table.