Woocommerce产品可由其作者针对特定用户角色进行编辑

时间:2019-02-26 12:55:12

标签: wordpress woocommerce product custom-post-type

我在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' );

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的代码中的错误来自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文件中。应该可以。