代码之家  ›  专栏  ›  技术社区  ›  Marko I.

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

  •  2
  • Marko I.  · 技术社区  · 8 年前

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

    function shapeSpace_set_only_author($query) {
        global $current_user;
        $query->set('author', $current_user->ID);
    }
    add_action('pre_get_posts', 'shapeSpace_set_only_author');
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   LoicTheAztec    8 年前

    您可以使用 献身的 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);
    }
    

    代码进入功能。活动子主题(或主题)的php文件。

    测试和工作

        2
  •  1
  •   Andrew Schultz    8 年前

    几乎在这里,您只需要指定您只想更改产品的查询。

    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);
        }
    }
    
    推荐文章