Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

$formatted_price - добавить вывод дополнительного поля

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Ria, 11 окт 2016.

  1. Ria

    Ria

    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    6
    Уже больше 2 недель не выходит ничего, подскажите пожалуйста, как же это правильно сделать?
    Файл wc-formatting-functions.php (строка 426)
    Код:
    $formatted_price = ( $negative ? '-' : '' ) . sprintf( $price_format, '<span class="woocommerce-Price-currencySymbol">' . get_woocommerce_currency_symbol( $currency ) . '</span>', $price );
        $return          = '<span class="woocommerce-Price-amount amount">' . $formatted_price . '</span>';
    Вывод символа валюты мне не нужен (get_woocommerce_currency_symbol( $currency ) ) - я его убрал.
    Через админку добавляю поля которые вывожу в карточке товара (там все работает)
    Код:
    add_action( 'woocommerce_product_options_general_product_data', 'wc_rooms_product_field' );
      function wc_rooms_product_field() {
      woocommerce_wp_text_input( array( 'id' => 'rooms', 'class' => 'wc_input_curency_price short', 'label' => __( 'Валюта', 'woocommerce' ) . ' ' ) );
      }
     
    add_action( 'save_post', 'wc_rooms_save_product' );
      function wc_rooms_save_product( $product_id ) {
        // Если это автосохранение, то ничего не делаем, сохраняем данные только при нажатии на кнопку Обновить
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
        if ( isset( $_POST['rooms'] ) ) { update_post_meta( $product_id, 'rooms', $_POST['rooms'] );
      } else delete_post_meta( $product_id, 'rooms' );
      }
     
    /*************Показываем поле на самом сайте********/ 
    /*add_action( 'woocommerce_single_product_summary', 'wc_rooms_show', 15 );
      function wc_rooms_show() { global $product;
        // Ничего не предпринимаем для вариативных товаров
        if ( $product->product_type <> 'variable' ) {$rooms = get_post_meta( $product->id, 'rooms', true );
          echo '<div style="width: 72%; height: 0; border-bottom: 1px dotted violet;">&nbsp;</div> <div class="woocommerce_msrp">';
          _e( 'Валюта: ', 'woocommerce' );
          echo '<span class="woocommerce-rooms-price">' . woocommerce_clean( $rooms ) . '</span>';
          echo '</div>';
        }
      }
    К примеру в карточке товара я делаю вывод так: в файле price.php пишу:
    Код:
    <?php echo $product->get_display_price(), $rooms = get_post_meta( $product->id, 'rooms', true ); ?>
    С помощью $rooms = get_post_meta( $product->id, 'rooms', true ) - я рядом с суммой получаю вывод того что указываю в админке в доп. поле.

    Возвращаемся к файлу wc-formatting-functions.php и что я здесь только не писал - ну ничего не выходит
    Код:
    $formatted_price = ( $negative ? '-' : '' ) . sprintf( $price_format, $rooms = get_post_meta( $product->id, 'rooms', true ), $price );
        $return          = '<span class="woocommerce-Price-amount amount">' . $formatted_price . '</span>';
    Как же мне все-таки правильно сформировать этот $formatted_price ? По сути я так понимаю что сам wc-formatting-functions.php не поймет что от него хотят, он не понимает что такое $rooms = get_post_meta( $product->id, 'rooms', true ) или просто $rooms - может ему нужно отдельно какую-то функию прописать дополнительно в этом файле? Помогите пожалуйста понять что? где? как? куда?