2017-01-07 6 views
1

Я пытаюсь создать сайт Wordpress, где я хочу показать/скрыть пункты меню при покупке предмета. Покупка товара через плагин WooCommerce.hide wordpress menu on item purchase

например. Если я куплю элемент, ссылка, связанная с продуктом, должна прийти в меню в качестве пункта меню. Если кто-то подскажет мне, как я могу это сделать. Не имеет значения. Если мне нужно закодировать или отредактировать код, я сделаю это.

+1

Что вы пытаетесь сделать? Какая-то связь с тележкой/всплывающее окно с изображением предметов, уже находящихся в корзине? – RST

+0

Нет простая логика, Отображение или скрытие нав пункт меню на покупку продукта если (продукт закупается) Показать пункт в меню навигации (пункт может быть любая страница) еще Скрыть пункт меню страницы. –

ответ

1

Поскольку ваш вопрос не очень ясен, я предполагаю, что вы хотите получить все купленные предметы от клиента (идентификатор пользователя) и отобразить их как своего рода список или меню.

Ниже вы найдете 2 функции.
1) первый получит все купленные идентификаторы продукта для текущего клиента (с дополнительным аргументом, $user_id).
2) Во-вторых один будет отображать меню (или список) для этой продукции с названиями и ссылками ...

Вот этот код (идет в function.php файл Вашей активной ребенка тема рудной темы):

function get_customer_products($user_id = null){ 

    if(empty($user_id) && is_user_logged_in()) 
     $user_id = get_current_user_id(); 

    if(! empty($user_id) && ! is_admin()){ 
     $customer_orders = get_posts(array(
      'meta_key' => '_customer_user', 
      'meta_value' => $user_id, 
      'post_type' => 'shop_order', 
      'numberposts' => -1, 
      'post_status' => 'wc-completed', // 'completed' order status 
     )); 

     $product_ids = array(); 

     foreach($customer_orders as $customer_order){ 
      $_order = wc_get_order($customer_order->ID); 
      foreach($_order->get_items() as $item){ 
       // Avoiding duplicates 
       if(!in_array($item['product_id'], $product_ids)) 
        $product_ids[] = $item['product_id']; 
      } 
     } 
     return $product_ids; 
    } 
} 

function display_customer_product_list(){ 
    // Getting current customer bought products IDs 
    $product_ids = get_customer_products(); 
    if(!empty($product_ids)){ 
     $output_html = '<div class="custom-product"><ul class="custom-menu">'; 
     foreach($product_ids as $product_id){ 
      $product = new WC_Product($product_id); 
      $output_html .= '<li><a href="'.$product->get_permalink().'">'.$product->get_title().'</a></li>'; 
     } 
     $output_html .= '</ul></div>'; 

     echo $output_html; 
    } 
} 

ПРИМЕНЕНИЕ

Затем вы можете использовать везде, в шаблонах темы PHP/файлов, таким образом:

display_customer_product_list(); 

Это будет что-то вроде:

<div class="custom-product"> 
    <ul class="custom-menu"> 
    <li><a href="http://www.example.com/product/slug1/">Product Title 1</a></li> 
    <li><a href="http://www.example.com/product/slug2/">Product Title 2</a></li> 
    <li><a href="http://www.example.com/product/slug3/">Product Title 3</a></li> 
    </ul> 
</div> 

С этим материалом вы сможете добиться того, что вы просматривают, перестраивают вторую функцию или просто используют первый в вашем шаблоне header.php вашей активной темы ...

Как условно показать скрытое существующее меню, вы можете использовать что-то вроде:

if(count(get_customer_products()) > 0){ 
    // Displaying customer bought product items 
} else { 
    // Displaying normal menu items 
}