将产品简短说明添加到Woocommerce管理员订单预览

问题描述 投票:2回答:2

我正在尝试将我的产品简短说明作为新标签添加到我的订购页面中,这样我们就可以更轻松地订购产品而不必进入产品内部。

我目前在产品下方看到SKU显示屏,理想情况下,它会带有产品简短说明。

这是到目前为止我设法做到的,但是没有简短说明的输出

// Adds tab 
add_action( 'woocommerce_admin_order_item_headers', 'pd_admin_order_items_headers' );
function pd_admin_order_items_headers($order){
  ?>
  <th class="line_customtitle sortable" data-sort="your-sort-option">
    Product MPN
  </th>
  <?php
}

// Shows Short Desc
add_action( 'woocommerce_admin_order_item_values', 'pd_admin_order_item_values' );
function pd_admin_order_item_values( $product ) {
  ?>
  <td class="line_customtitle">
    <?php the_excerpt(); ?>
  </td>
  <?php
}

当前结果说

“没有摘要,因为这是受保护的帖子。”

[我觉得它没有遍历产品并尝试获取订单摘录,因此为什么它说它受到保护,但我对此不太有经验。

感谢您的任何帮助。

php wordpress woocommerce backend orders
2个回答
1
投票

请尝试以下内容,而不是(带注释代码)

// Add a custom column to the order "line items" html table
add_action( 'woocommerce_admin_order_item_headers', 'custom_admin_order_items_headers', 20, 1 );
function custom_admin_order_items_headers( $order ){

    echo '<th class="line_custom-title sortable" data-sort="your-sort-option">';
    echo __('Short description', 'woocommerce') . '</th>';
}

// Custom column content in the order "line items" html table
add_action( 'woocommerce_admin_order_item_values', 'custom_admin_order_item_values', 20, 3 );
function custom_admin_order_item_values( $_product, $item, $item_id ) {
    // Only for "line_item" items type
    if( ! $item->is_type('line_item') ) return;

    // For product variation, we get the parent variable product (in case of)
    if( $_product->is_type('variation') ){
        $parent_product = $_product->get_parent();
        // The product variation description (as short description doesn't exist)
        $excerpt        = $_product->get_description(); 
        // If product variation description doesn't exist we display the short description of the parent variable product
        $excerpt        = empty($excerpt) ? $parent_product->get_short_description() : $excerpt;
    }
    // For other product types
    else {
        $excerpt        = $_product->get_short_description();
    }

    // Output
    echo '<td class="line_custom-description">' . $excerpt . '</td>';
}

代码进入您的活动子主题(或活动主题)的function.php文件。经过测试和工作


-1
投票

@@ LoicTheAztec的答案对我不起作用,我修改了他的答案,并用下面的方法替换了custom_admin_order_item_values函数,然后它起作用了。

// Custom column content in the order "line items" html table
function custom_admin_order_item_values( $item_name, $item, $is_visible ){
    $product_id = $item->get_product_id(); // Get the product Id
    $excerpt = get_the_excerpt( $product_id ); // Get the short description
    // Output
    echo '<td class="line_custom-description">' . $excerpt . '</td>';
}
© www.soinside.com 2019 - 2024. All rights reserved.