2016-05-17 3 views
-1

Я пытаюсь удалить корзину для покупок из темы родителей через файл functions.php дочерней темы. Я мог бы легко удалить его из parent.php родителя, но мы все знаем, что это не-нет. Кроме того, возможность вернуть его должна быть доступна в будущем. К сожалению, родительская тема MAXSTORE была настроена так, что общий вывод из woocommerce не работает. Я должен взломать функции в родительском классе MAXSTORE. Но я на самом деле не настолько хорош в этом. Может ли кто-нибудь показать мне, как это сделать?Извлечение корзины покупок из меню с детской темы functions.php

p.s. Не беспокойтесь о части списка пожеланий. Тема конфигурация имела удобный денди флажок, чтобы контролировать его видимость;)

Вот функция в вопросе от родительского functions.php

//////////////////////////////////////////////////////////////////// 
// WooCommerce header cart 
//////////////////////////////////////////////////////////////////// 
if (!function_exists('maxstore_cart_link')) { 

    function maxstore_cart_link() { 
     ?> 
     <a class="cart-contents text-right" href="<?php echo esc_url(WC()->cart->get_cart_url()); ?>" title="<?php _e('View your shopping cart', 'maxstore'); ?>"> 
      <i class="fa fa-shopping-cart"> 
       <span class="count"><?php echo WC()->cart->get_cart_contents_count(); ?></span> 
      </i> 
      <span class="amount-title hidden-sm hidden-xs"><?php echo _e('Cart ', 'maxstore'); ?></span> 
      <span class="amount-cart"><?php echo wp_kses_data(WC()->cart->get_cart_subtotal()); ?></span> 
     </a> 
     <?php 
    } 

} 
if (!function_exists('maxstore_head_wishlist')) { 

    function maxstore_head_wishlist() { 
     if (function_exists('YITH_WCWL')) { 
      $wishlist_url = YITH_WCWL()->get_wishlist_url(); 
      ?> 
      <div class="top-wishlist text-right"> 
       <a href="<?php echo esc_url($wishlist_url); ?>" title="Wishlist" data-toggle="tooltip"> 
        <i class="fa fa-heart"><div class="count"><span><?php echo yith_wcwl_count_products(); ?></span></div></i> 
       </a> 
      </div> 
      <?php 
     } 
    } 

} 
add_action('wp_ajax_yith_wcwl_update_single_product_list', 'maxstore_head_wishlist'); 
add_action('wp_ajax_nopriv_yith_wcwl_update_single_product_list', 'maxstore_head_wishlist'); 

if (!function_exists('maxstore_header_cart')) { 

    function maxstore_header_cart() { 
     ?> 
     <div class="header-cart-inner"> 
      <?php maxstore_cart_link(); ?> 
      <ul class="site-header-cart menu list-unstyled"> 
       <li> 
        <?php the_widget('WC_Widget_Cart', 'title='); ?> 
       </li> 
      </ul> 
     </div> 
     <?php 
     if (get_theme_mod('wishlist-top-icon', 0) != 0) { 
      echo maxstore_head_wishlist(); 
     } 
     ?> 
     <?php 
    } 

} 
if (!function_exists('maxstore_header_add_to_cart_fragment')) { 
    add_filter('woocommerce_add_to_cart_fragments', 'maxstore_header_add_to_cart_fragment'); 

    function maxstore_header_add_to_cart_fragment($fragments) { 
     ob_start(); 

     maxstore_cart_link(); 

     $fragments[ 'a.cart-contents' ] = ob_get_clean(); 

     return $fragments; 
    } 

} 
//////////////////////////////////////////////////////////////////// 

EDIT

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

li#wpmenucartli { 
    display: none; //hides the menu cart list item 
} 

.navbar-inverse .navbar-nav > li:nth-last-child(2) > a:after { 
    content: ''; //gets rid of the trailing dash on the second to last list item to pretend it is the actual last item 
    border-right:none; //if you have a border, this does the same as above 
} 

Спасибо заранее

+0

Я не уверен, что полностью понимаю проблему здесь, но можете ли вы просто прокомментировать весь блок кода? –

+0

Я думал, что я действительно понятен. Я на самом деле очень хорош в этом. Хорошо, вот что, если я прокомментирую код, как только тема получит обновление, он вернется. Вот почему в любое время вы хотите изменить тему, вы должны сделать это в дочерней теме. ;) – LOTUSMS

+0

Не беспокойтесь. Я еще не много работал с WordPress, так что это, наверное, моя ошибка. Родительский код был всем, что я мог видеть, поэтому я дал ему шанс. :) Может быть, кто-то еще может помочь больше. –

ответ

0

2 варианта:

  1. создать плагин ... плагинов загружаются до темы так что те, если функция существует верно, потому что вы уже определили функцию, то функция в теме не будет определена (может вызвать ошибка, если бы это было) ... фактически определяя функции в ваших дочерних темах functi Дополнения также будут работать, он будет загружен перед родителями functions.php

    function maxstore_head_wishlist(){ 
        //do nada.... 
    } 
    
  2. удалить крючки можно с детской темы, будет работать на второй, не уверен, где первую функцию зацепила, и т.д. ..

    remove_action('wp_ajax_yith_wcwl_update_single_product_list', 'maxstore_head_wishlist'); 
    

проблема с функцией выше его Аякса, так что будет JS рассматривать как хорошо.