5

Woocommerce のチェックアウトページに各製品の簡単な説明を追加するにはどうすればよいですか? 私はたくさんの研究を行いましたが、これは私が思いついた最高のものです.

<?php
if (sizeof($woocommerce->cart->get_cart())>0) :
    foreach ($woocommerce->cart->get_cart() as $item_id => $values) :
        $_product = $values['data'];
    if ($_product->exists() && $values['quantity']>0) :
        echo '
    <tr class = "' . esc_attr(apply_filters('woocommerce_checkout_table_item_class', 'checkout_table_item', $values, $item_id ) ) . '">
    <td class="product-name">'.$_product->get_title().$woocommerce->cart->get_item_data( $values ).'</td>
    <td class="short_description">'.$_product->get_post_data().$woocommerce->post->get_post_excerpt( $values ).'</td>

    <td class="product-quantity">'.$values['quantity'].'</td>

    <td class="basispreis">'.$_product->get_price().$woocommerce->post->get_post_excerpt( $values ).'</td>

    <td class="product-total">' . apply_filters( 'woocommerce_checkout_item_subtotal', $woocommerce->cart->get_product_subtotal( $_product, $values['quantity'] ), $values, $item_id ) . '</td>
    </tr>';
    endif;
    endforeach;
    endif;
    do_action( 'woocommerce_cart_contents_review_order' );
?>

エラーが発生します

キャッチ可能な致命的なエラー: クラス WP_Post のオブジェクトを /wp-content/plugins/woocommerce/templates/checkout/form-checkout.php のこの行で文字列に変換できませんでした

 <td class="short_description">'.$_product->get_post_data().$woocommerce->post->get_post_excerpt( $values ).'</td>
4

1 に答える 1

8

そのためにフィルターwoocommerce_get_item_dataを使用することができます。

そのようです:

add_filter( 'woocommerce_get_item_data', 'wc_checkout_description_so_15127954', 10, 2 );

function wc_checkout_description_so_15127954( $other_data, $cart_item )
{
    $post_data = get_post( $cart_item['product_id'] );
    $other_data[] = array( 'name' =>  $post_data->post_excerpt );
    return $other_data;
}

他のインスタンスで呼び出されるかどうかわからないため、このフィルターが実際にチェックアウトページを表示しているときにのみ呼び出されるようにするなど、何らかのチェックが必要になる場合があることに注意してください。

于 2013-02-28T07:08:26.720 に答える