这是如何将产品类别添加到产品标题。我不是特别喜欢它是如何为我输出的,但是我正在测试它是否在可变订阅中,因此正在修改它自己的数据。这将去主题functions.php
function kia_woocommerce_order_item_name($name, $item){
$product_id = $item['product_id'];
$tax = 'product_cat';
$terms = wp_get_post_terms($product_id, $tax, array('fields' => 'names'));
if($terms && ! is_wp_error($terms)) {
$taxonomy = get_taxonomy($tax);
$name .= '<label>' . $taxonomy->label . ': </label>' . implode(', ', $terms);
}
return $name;
}
add_filter('woocommerce_order_item_name', 'kia_woocommerce_order_item_name', 10, 2);
否则,你可以在order-details.php
模板复制到自己的主题(所以yourtheme/woocommerce/order/order-details.php
和直接添加代码。这将让您对您想要的类别出现更多的控制因为本节中没有大量的钩子,但是如果WooCommerce修改了这段代码,就会使您处于危险之中,因为主题使用的是过时的模板,所以我曾在几个网站上工作过。 ,一个例子是:
<?php
/**
* Order details
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.2.0
*/
if (! defined('ABSPATH')) exit; // Exit if accessed directly
global $woocommerce;
$order = new WC_Order($order_id);
?>
<h2><?php _e('Order Details', 'woocommerce'); ?></h2>
<table class="shop_table order_details">
<thead>
<tr>
<th class="product-name"><?php _e('Product', 'woocommerce'); ?></th>
<th class="product-total"><?php _e('Total', 'woocommerce'); ?></th>
</tr>
</thead>
<tfoot>
<?php
if ($totals = $order->get_order_item_totals()) foreach ($totals as $total) :
?>
<tr>
<th scope="row"><?php echo $total['label']; ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
endforeach;
?>
</tfoot>
<tbody>
<?php
if (sizeof($order->get_items()) > 0) {
foreach($order->get_items() as $item) {
$_product = apply_filters('woocommerce_order_item_product', $order->get_product_from_item($item), $item);
$item_meta = new WC_Order_Item_Meta($item['item_meta'], $_product);
?>
<tr class="<?php echo esc_attr(apply_filters('woocommerce_order_item_class', 'order_item', $item, $order)); ?>">
<td class="product-name">
<?php
if ($_product && ! $_product->is_visible())
echo apply_filters('woocommerce_order_item_name', $item['name'], $item);
else
echo apply_filters('woocommerce_order_item_name', sprintf('<a href="%s">%s</a>', get_permalink($item['product_id']), $item['name']), $item);
echo apply_filters('woocommerce_order_item_quantity_html', ' <strong class="product-quantity">' . sprintf('× %s', $item['qty']) . '</strong>', $item);
$item_meta->display();
// insert product category here
$tax = 'product_cat';
$terms = wp_get_post_terms($_product->id, $tax, array('fields' => 'names'));
if($terms && ! is_wp_error($terms)) {
$taxonomy = get_taxonomy($tax);
echo '<strong>' . $taxonomy->label . ': </strong>' . implode(', ', $terms);
}
// end edit
if ($_product && $_product->exists() && $_product->is_downloadable() && $order->is_download_permitted()) {
$download_files = $order->get_item_downloads($item);
$i = 0;
$links = array();
foreach ($download_files as $download_id => $file) {
$i++;
$links[] = '<small><a href="' . esc_url($file['download_url']) . '">' . sprintf(__('Download file%s', 'woocommerce'), (count($download_files) > 1 ? ' ' . $i . ': ' : ': ')) . esc_html($file['name']) . '</a></small>';
}
echo '<br/>' . implode('<br/>', $links);
}
?>
</td>
<td class="product-total">
<?php echo $order->get_formatted_line_subtotal($item); ?>
</td>
</tr>
<?php
if ($order->has_status(array('completed', 'processing')) && ($purchase_note = get_post_meta($_product->id, '_purchase_note', true))) {
?>
<tr class="product-purchase-note">
<td colspan="3"><?php echo wpautop(do_shortcode($purchase_note)); ?></td>
</tr>
<?php
}
}
}
do_action('woocommerce_order_items_table', $order);
?>
</tbody>
</table>
<?php do_action('woocommerce_order_details_after_order_table', $order); ?>
<header>
<h2><?php _e('Customer details', 'woocommerce'); ?></h2>
</header>
<dl class="customer_details">
<?php
if ($order->billing_email) echo '<dt>' . __('Email:', 'woocommerce') . '</dt><dd>' . $order->billing_email . '</dd>';
if ($order->billing_phone) echo '<dt>' . __('Telephone:', 'woocommerce') . '</dt><dd>' . $order->billing_phone . '</dd>';
// Additional customer details hook
do_action('woocommerce_order_details_after_customer_details', $order);
?>
</dl>
<?php if (! wc_ship_to_billing_address_only() && $order->needs_shipping_address() && get_option('woocommerce_calc_shipping') !== 'no') : ?>
<div class="col2-set addresses">
<div class="col-1">
<?php endif; ?>
<header class="title">
<h3><?php _e('Billing Address', 'woocommerce'); ?></h3>
</header>
<address><p>
<?php
if (! $order->get_formatted_billing_address()) _e('N/A', 'woocommerce'); else echo $order->get_formatted_billing_address();
?>
</p></address>
<?php if (! wc_ship_to_billing_address_only() && $order->needs_shipping_address() && get_option('woocommerce_calc_shipping') !== 'no') : ?>
</div><!-- /.col-1 -->
<div class="col-2">
<header class="title">
<h3><?php _e('Shipping Address', 'woocommerce'); ?></h3>
</header>
<address><p>
<?php
if (! $order->get_formatted_shipping_address()) _e('N/A', 'woocommerce'); else echo $order->get_formatted_shipping_address();
?>
</p></address>
</div><!-- /.col-2 -->
</div><!-- /.col2-set -->
<?php endif; ?>
<div class="clear"></div>
嗨,约翰。你可以编辑来解释你想要添加什么以及在哪里?截图不会是一个可怕的想法。;)尽管我倾向于认为我们将通过'woocommerce_order_item_name'过滤器将类别名称添加到项目名称。 – helgatheviking
谢谢!我添加了一个截图。明白我可能会使用'woocommerce_order_item_name'。我现在要去检查一下。请让我知道,如果你认为我应该增加更多的问题 – JohnMcCarthy