Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

История такая:

Поле боя - Wordpress. Есть сказочная тема Boutique Kids,  написана она неким dtbaker'ом - забугорным вордпресс девелопером. И все бы ничего, да есть тут загвоздка, в саму тему встроен плагин WooCommerce (лучшее решение для вп он-лайн шопов) и под него написан вот такой скрипт для модификации товарной корзины:

'; $categories = array(); $terms = get_the_terms( get_the_ID(), 'product_cat', '', ', ', '' ); if(is_array($terms)) { foreach ( $terms as $category ) { $categories[ $category->term_id ] = $category->name; } } echo implode(' » ',$categories); echo ''; } // hack for before/after title header. function dtbaker_woocommerce_show_page_title($tf){ static $done = false; if($tf && !$done){ $done = true; do_action('boutique_page_header_before'); } return $tf; } function dtbaker_woocommerce_archive_description(){ static $done = false; if(!$done){ $done = true; do_action('boutique_page_header_after'); } } add_filter('woocommerce_show_page_title', 'dtbaker_woocommerce_show_page_title', 10, 1); add_action('woocommerce_archive_description', 'dtbaker_woocommerce_archive_description'); function woo_archive_custom_cart_button_text() {        return __( 'Купить сейчас', 'boutique-kids' ); } function dtbaker_woocommerce_loop_add_to_cart_link($url, $product=array(), $link=array()){ return preg_replace('#class="[^"]*"#','class="dtbaker_button_light"',$url); } function dtbaker_woocommerce_product_add_to_cart_url($url, $obj){ if(isset($obj->id) && $obj->id > 0){ $url = add_query_arg(array( 'add-to-cart'=>$obj->id, ),get_permalink($obj->id)); } return $url; } // stop default pages from getting installed by woocommerce. we create these in our default options are.    function dtbaker_woocommerce_stop_default_pages(){     return 0;    } add_filter('pre_option__wc_needs_pages','dtbaker_woocommerce_stop_default_pages'); // style success message    function dtbaker_wc_add_to_cart_message($message, $product_id){     return str_replace('button wc-forward','dtbaker_button_light',$message);    } add_filter('wc_add_to_cart_message','dtbaker_wc_add_to_cart_message', 10, 2);    function dtbaker_woocommerce_single_product_image_html($message, $product_id){     $message = str_replace('woocommerce-main-image','woocommerce-main-image fancy_border',$message);     $message = preg_replace('#]*>#','$0',$message);     return $message;    } add_filter('woocommerce_single_product_image_html','dtbaker_woocommerce_single_product_image_html', 10, 2);    //add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );    // copied from woocommerce-template.php    /*function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0  ) { global $post; if ( has_post_thumbnail() ) $d = get_the_post_thumbnail( $post->ID, $size ); elseif ( woocommerce_placeholder_img_src() ) $d = woocommerce_placeholder_img( $size );        else            $d = '';        return ''.$d.''; }*/ add_filter( 'woocommerce_output_related_products_args', 'dtbaker_related_products_args' );   function dtbaker_related_products_args( $args ) { $args['posts_per_page'] = 4; // 4 related products $args['columns'] = 4; // arranged in 2 columns return $args; } remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 ); add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 ); if ( ! function_exists( 'woocommerce_output_upsells' ) ) { function woocommerce_output_upsells() {     woocommerce_upsell_display( 4,4 ); // Display 3 products in rows of 3 } }}

И этот самый скрипт блокирует стандартную корзину самого WooCommerce'а, а только в ней есть настройка позволяющая задавать товару 4 типа, один из которых - external - товар партнерской сети, переход на который осуществляется после нажатия кнопки "Купить".

Скрипт от dtbaker'а же блокирует это возможность и вместо перехода по внешней ссылке удерживает нас в корзине (даже при удаленной её странице) и выводит сообщение о невозможности приобрести товар:

https://forkids.moscow/shop/malyshi/podarochnyj-sertifikat-na-5000r-little-gentrys/?add-to-cart=8862

Выглядит это как на ссылке выше.

Задача исправить скрипт, при необходимости, поправить что-то в другом скрипте темы.

С меня доступы с вас результат. 

Затык я думаю не первый, так что хотелось б иметь возможность и дальше работать по возникающим вопросам.

7 лет назад
InoUma
Михаил 
35 летРоссия
8 лет в сервисе
Был
6 лет назад