首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户更改用户角色时编辑postmeta?

当用户更改用户角色时编辑postmeta?
EN

WordPress Development用户
提问于 2018-04-16 11:07:27
回答 1查看 301关注 0票数 1

我正在试图更新数据库中的一个后置元字段,名为背景视频。当用户将角色更改为一个名为basic的用户角色时,我想清除这个值。

我找到了这段代码,据我所理解,当用户将角色更改为"basic“时,代码就会运行。

代码语言:javascript
复制
add_action( 'basic', function( $user_id, $role, $old_roles ) 
{
    // Your code ...

}, 10, 3 );

问题是,我不知道如何针对所有的后元字段称为背景视频,并从他们清除元值。

编辑:我试过了,但它不起作用:

代码语言:javascript
复制
add_action( 'set_user_role', function( $user_id, $role, $old_roles )
{
    if ( 'basic' == $role ) {


            $args = array( 'fields'          => 'ids',
                           'posts_per_page'  => -1,
                           'post_type'       => 'attachment',
                           'meta_key'        => 'background-video'
                           );
            $all_ids = new WP_Query( $args );

            foreach( $all_ids as $ai ) {

               update_post_meta( $ai->post->ID, 'background-video', '' );
            }
            wp_reset_postdata();


    }

}, 10, 3 );

在这里找到函数如何更新所有帖子的自定义元数据

另一件事是,我在WP Multisite上使用这个,我让用户从几个不同的角色中选择,但是我希望这个函数在他们选择"basic“时启动。

EN

回答 1

WordPress Development用户

发布于 2018-04-16 11:21:43

你说的不完全对。当名为basic的操作将使用do_action('basic', ...)调用时,此代码将运行。但是..。在WP核心中没有这样的操作,所以恐怕您的代码根本不会运行。

有些钩子可能对你的情况有帮助。它被称为set_user_role,它有3个params ($user_id$role$old_roles)。

因此,您的代码应该更像这样:

代码语言:javascript
复制
add_action( 'set_user_role', function( $user_id, $role, $old_roles ) 
{
    if ( 'basic' == $role ) {
        // Your code ...
    }

}, 10, 3 );
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/300905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档