首页 > 解决方案 > Woocommerce 产品可由其作者针对特定用户角色进行编辑

问题描述

我在我的 WordPress 网站上注册了具有不同角色的不同用户。除了其他用户,我想允许广告商(具有广告商角色的用户 - 广告商是我创建的自定义角色)将他们自己的产品放在我的网站上并管理它们。但他们只需要管理(创建、编辑和删除)他们自己的产品,而不是其他人的产品。

到目前为止,我已经尝试了以下代码,但它似乎无效。我确信我可以使用 pre_get_posts 操作来实现我的目标,并且以下函数可以帮助我,但我需要一些帮助来解决此代码的问题。我不确定产品的帖子类型。

这是我试图实现我的目标的代码:

function show_specific_advertiser_products( $query ) {
    $current_user = wp_get_current_user();
    if ( is_admin() && in_array ($query->get( 'post_type'), array( 'woocommerce_products' ) ) && !user_can( $current_user, 'administrator' ) ) {

        $query->set( 'author__in', $current_user->ID );
    }
}
add_action( 'pre_get_posts', 'show_specific_advertiser_products' );

任何帮助将不胜感激。

标签: wordpresswoocommerceproductcustom-post-type

解决方案


您的代码中的错误来自post_type……对于 woocommerce 产品,它只是product. 您将不得不替换administrator为您的自定义用户角色。

因此,请尝试以下操作:

add_action( 'pre_get_posts', 'show_specific_advertiser_products' );
function show_specific_advertiser_products( $query ) {
    $user = wp_get_current_user();
    if ( is_admin() && $query->get( 'post_type') === 'product' && in_array('administrator', $user->roles) ) {
        $query->set( 'author', $user->ID );
    }
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。它应该有效。


推荐阅读