在商品购买上隐藏wordpress菜单

时间:2017-01-07 09:59:20

标签: php wordpress woocommerce menuitem

我正在尝试构建一个wordpress网站,我想在项目购买时显示/隐藏菜单项。通过WooCommerce插件购买该项目。

e.g。如果我购买了一件商品,那么与产品相关的链接应该作为菜单项进入菜单。如果有人能暗示我怎么能这样做。无所谓如果我必须编码或编辑代码,我会。

1 个答案:

答案 0 :(得分:1)

由于您的问题不是很明确,我想您希望获得客户购买的所有商品(用户ID)并将其显示为一种列表或菜单。

下面你会发现2个功能。
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;
    }
}
  

<强> USAGE

然后你可以在你的主题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
}