скрыть WordPress меню при покупке товара

Я пытаюсь создать сайт WordPress, где я хочу показать / скрыть пункты меню при покупке предмета. Покупка товара через плагин WooCommerce.

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

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
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]