wordpress - 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' );
任何帮助将不胜感激。
解决方案
您的代码中的错误来自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 文件中。它应该有效。
推荐阅读
- django - 如何删除 django 用户模型中的名字和姓氏列?
- c# - 无法将 Excel 文件上传到 Azure 存储 Blob
- pandas - 在 Pandas 中熔化多个列
- ruby - RSpec中需要按值对hash进行排序的测试方法
- php - PayPal地址验证以拒绝非住宅关键字
- flutter - Flutter:将缓存的(.file)文件转换为mp4文件
- couchdb - 有没有办法使用超级账本结构为 couchDB 中的不同合同设置不同的索引
- json - YAML_FILE_ERROR:没有找到预期的密钥
- java - 为什么编译器不为扩展接口的泛型强制执行返回类型值?
- node.js - 在没有猫鼬的情况下使用 .aggregate 和 node.js