WooCommerce - Редактировать название продукта в корзине, оформить заказ и плагин "Плавающая корзина" - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть два кода для изменения названия продукта в моем переменном продукте woocommerce. Первый работает везде, но не в моем " плавающем плагине " (используется имя продукта по умолчанию).

    add_action( 'woocommerce_before_calculate_totals', 'custom_cart_items_prices', 10, 1 );
function custom_cart_items_prices( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ) {

        $product = $cart_item['data'];
        $modell = $product->get_attribute('pa_modell');
        $reparatur = $product->get_attribute('pa_reparatur');

        $original_name = method_exists( $product, 'get_name' ) ? $product->get_name() : $product->post->post_title;

        $new_name = '<class="new-product-name">' . $original_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;

        if( method_exists( $product, 'set_name' ) )
            $product->set_name( $new_name );
        else
            $product->post->post_title = $new_name;
    }
}

Второй работает на моем " Плагин плавающей корзины", но если я тоже его использую, то у меня будет одно и то же имя 2 раза в корзине и на странице оформления заказа.

    function show_model_in_cart_items( $item_name, $cart_item, $cart_item_key ) {

    $product = $cart_item['data'];
    $modell = $product->get_attribute('pa_modell');
    $reparatur = $product->get_attribute('pa_reparatur');

    {
        $item_name = '<class="product-model">' . $item_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;
    } 

    return $item_name;
}
add_filter( 'woocommerce_cart_item_name', 'show_model_in_cart_items', 99, 3 );

Некоторые части этого кода находятся в inte rnet, другие от меня. У кого-нибудь есть идеи, как его совместить, чтобы он работал где-нибудь без одного и того же имени 2 раза в корзине?

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел решение. И иногда это так просто ... как простой if и else.

add_filter( 'woocommerce_cart_item_name', 'show_model_in_cart_items', 99, 3 );
function show_model_in_cart_items( $item_name, $cart_item, $cart_item_key ) {

       if ( is_checkout() ) {
       return $item_name;
       }
       else {
    $product = $cart_item['data'];
    $modell = $product->get_attribute('pa_modell');
    $reparatur = $product->get_attribute('pa_reparatur');

    {
        $item_name = '<class="reparatur-beschreibung">' . $item_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;
    } 
        return $item_name;
}}

Теперь плагин плавающей корзины может использовать его где угодно, кроме кассы, где у меня есть другой код для исправления названия продукта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...