WooCommerce:限制用户只能看到他创建的产品

时间:2019-03-20 作者:Fernando Aureliano

我有这个代码,作者只能看到自己的帖子。我需要作者只看到他们在woocommerce上创建的产品。我知道woocommerce产品在默认情况下没有作者,但我可以通过插件添加。我想做的是更改此代码段,以限制woocommerce自定义帖子类型中的产品列表。

有人知道最好的方法吗?

谢谢

function posts_for_current_author($query) {
        global $pagenow;

    if( \'edit.php\' != $pagenow || !$query->is_admin )
        return $query;

    if( !current_user_can( \'manage_options\' ) ) {
       global $user_ID;
       $query->set(\'author\', $user_ID );
     }
     return $query;
}
add_filter(\'pre_get_posts\', \'posts_for_current_author\');

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我认为改变以下条件:

if( !current_user_can( \'manage_options\' ) )
对于这个:

if( !current_user_can( \'manage_options\' ) && \'product\' === $query->get( \'post_type\' ) )
会的。

简要说明:我添加了第二个条件,用于检查查询是否针对帖子类型为的WooCommerce产品product.

更新

如果要确保代码仅在产品页面(WooCommerce→products)上运行,则可以(删除global $pagenow; 和)更改此选项:

if( \'edit.php\' != $pagenow || !$query->is_admin )
对于这个:

if( !$query->is_admin || \'edit-product\' !== get_current_screen()->id )
而不是依赖全球$user_ID, 您可能应该使用get_current_user_id(): $query->set( \'author\', get_current_user_id() ); :)