我正在尝试建立一个wordpress网站,在这里我想显示/隐藏项目购买的菜单项。通过WooCommerce插件购买商品。
例如,如果我购买了一个项目,与产品相关的链接应该作为菜单项出现在菜单中。如果有人能提示我该怎么做。没关系,如果我必须编码或编辑代码,我会的。
由于您的问题不太清楚,我想您希望获得客户(用户ID)购买的所有商品,并将其显示为一种列表或菜单。
下面有两个函数
1)第一个将获取当前客户的所有购买产品ID(带有可选参数,$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
}