По умолчанию кнопка купить и цена выводятся на странице товара с помощью фильтра: add_filter('the_content','rcl_add_product_box',10);
Подскажите пожалуйста как кастомно вывести данный блок в шаблоне темы без привязки к the_content ?
Первое это отменяем фильтр: remove_filter('the_content','rcl_add_product_box',10);
Далее пробовал переопределить вывод с помощью add_action и do_action, но не получается, маловато опыта в этом...
Функции, что за это отвечают, находятся здесь: commerce/content/product-box.php
Вот весь код из файла:
<?php add_filter('the_content','rcl_add_product_box',10); function rcl_add_product_box($content){ global $post, $rmag_options; if($post->post_type != 'products' || doing_filter('get_the_excerpt')) return $content; if(doing_filter('the_content')){ $productCart = (isset($rmag_options['cart_button_single_page']))? $rmag_options['cart_button_single_page']: array('top','bottom'); if(!in_array('top',$productCart)) return $content; } $content = rcl_get_product_box($post->ID).$content; return $content; } add_action('product_template', $content ); function rcl_get_product_box($product_id){ $cartBox = new Rcl_Cart_Button_Form(array( 'product_id' => $product_id )); $content = '<div id="rcl-product-box">'; if(get_post_meta($product_id, 'recall_slider', 1)){ $content .= '<div class="product-gallery">'; $content .= rcl_get_product_gallery($product_id); $content .= '</div>'; } $content .= '<div class="product-metabox">'; $content .= $cartBox->cart_form(); $content .= '</div>'; $content .= '</div>'; return $content; }
Первая функция определяет в каком месте осуществлять вывод до или после the_content, эта опция есть в настройках дополнения.
Спасибо за ответ, наверное, не достаточно подробно описал задачу...
Кнопка купить на странице товара выводиться с помощью фильтра непосредственно в
<?php the_content(); ?>
. Привел выше код из дополнения магазина, где формируется данный фильтр.
Мне необходимо вывести кнопку покупки на странице товара кастомно, через новую функцию, совсем не привязываясь к the_content.
Андрей CS сказал(а)
получаем код кнопки "В корзину" и возвращаем его:
global $post; $CartButton = new Rcl_Cart_Button_Form(array( 'product_id' => $post->ID )); return $CartButton->cart_form();
А можете пожалуйста подробней, куда этот код и как вывести? По разному пробовал, не выходит...
Протестировал данный код на тестовом сайте на реальном хостинге с дефолтной темой twentyten и без посторонних плагинов. Кнопка не выводиться. Добавляю код перед the_content() так:
<?php global $post; $CartButton = new Rcl_Cart_Button_Form(array( 'product_id' => $post->ID )); return $CartButton->cart_form(); ?> <?php the_content(); ?>
Может в коде ошибка?