在Woocommerce的前端只显示当前用户的产品

时间:2018-02-24 20:57:55

标签: php wordpress woocommerce product author

我只需要在前端显示当前用户的产品,即登录用户,他/她应该只能在整个网站上查看自己的产品。我尝试了下面的代码,但这限制了对当前用户没有创建的所有帖子和页面的访问权限。而且我只需要限制woocommerce产品。

UPDATE ProductT 
INNER JOIN MaterialT ON MaterialT.ProductID = ProductT.ProductID 
SET ProductT.Stock = ProductT.Stock - MaterialT.Quantity
WHERE MaterialT.WorkOrderID = [OrderID];

2 个答案:

答案 0 :(得分:1)

几乎在那里,你只需要指定你只想改变产品的查询。

add_action( 'pre_get_posts', 'modify_query_show_current_user_products' );

function modify_query_show_current_user_products( $query ) {
    global $current_user;

    if( ! is_admin() && $query->is_main_query() && isset( $query->query_vars['wc_query'] ) && $query->query_vars['wc_query'] == 'product_query' ) {
        $query->set('author', $current_user->ID);
    }
}

答案 1 :(得分:1)

您可以使用专用 woocommerce_product_query操作挂钩来限制所显示的产品:

add_action( 'woocommerce_product_query', 'shapeSpace_set_only_author', 20, 2 );
function shapeSpace_set_only_author ( $q, $query ) {
    if( is_admin() ) return;

    global $current_user;
    $q->set('author', $current_user->ID);
}

代码放在活动子主题(或主题)的function.php文件中。

经过测试和工作