Wordpress Multisite hooked 功能被绕过

问题描述 投票:0回答:1

我将一个函数挂接到 wp_initialize_site 钩子上,当我通过 Network Admin -> Sites -> Add New 创建新站点时,一切都按预期工作。或者,如果注册用户创建了一个新网站。

新网站应该是存档并且新用户上应该有一个用户元_new_site,但是当通过wp-signup.phpGimme一起创建新用户和网站时它不起作用一个网站! 选项。看来我的功能被绕过了。

我也尝试将相同的函数挂接到 wpmu_activate_user 钩子上,但它仍然不起作用。

代码或多或少像这样(我把它放在插件文件中):

add_action( 'wp_initialize_site', function( $new_site, $args ) {
    update_blog_status( $new_site->id, 'public', 0 );
    update_blog_status( $new_site->id, 'archived', 1 );
    add_user_meta( (int) $args['user_id'], '_new_site', $new_site->id, true );
}, 20, 2 );

我做错了什么?我错过了什么吗?

wordpress multisite
1个回答
0
投票

不确定您是否能够弄清楚这一点,但我只是偶然发现了这一点,并且有一个类似的案例我能够解决。您的代码接近您想要实现的目标,只需要一点调整。

检查WP文档中的wp_initialize_site钩子,您可以直接访问Site对象并更新其属性。这段代码应该能达到你想要的效果:

add_action( 'wp_initialize_site', function( $new_site, $args ) {
    update_blog_status( $new_site->blog_id, 'public', 0 );
    update_blog_status( $new_site->blog_id, 'archived', 1 );
    add_user_meta( (int) $args['user_id'], '_new_site', $new_site->blog_id, true );
}, 20, 2 );

这应该可以很好地存档您的新站点并将该站点的 ID 添加为用户元。

© www.soinside.com 2019 - 2024. All rights reserved.