我在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' );
任何帮助将不胜感激。
答案 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文件中。应该可以。