我当前正在使用代码将自定义字段添加到site-info.php
&;site-new.php
在网络管理中,要向数据库添加自定义选项,当我创建新的子网站时,这会起作用,它会在数据库中设置并检索输入值中的值。
但是当我尝试更新此自定义选项的值时site-info
, 这甚至没有到达函数,很可能是因为我使用了(错误的)钩子wpmu_new_blog
, 因为我正在更新,我尝试使用wpmu_blog_updated
, wpmu_edit_blog
, wpmu_update_blog
, 但我就是不能让它工作。
任何帮助都将不胜感激。
我的代码如下:
//Add custom field Site-options Network-admin
add_action(\'admin_footer\', \'user16975_custom_options\');
function user16975_custom_options(){
global $pagenow;
if( \'site-info.php\' == $pagenow OR \'site-new.php\' == $pagenow ) {
if(ctype_digit($_GET[\'id\']))
$custom_limit_site_id = $_GET[\'id\'];
else
$custom_limit_site_id =\'\';
?><table><tr id="user16975_custom_options">
<th scope="row">Maximaal aantal gebruikers</th>
<td><input type="text" name="blog[custom_limit_amount]" value="<?=get_blog_option( $custom_limit_site_id, \'custom_limit_amount\', \'10\' );?>"/></td>
</tr></table>
<script>jQuery(function($){
$(\'.form-table tbody\').append($(\'#user16975_custom_options\'));
});</script><?php
}
}
function add_new_blog_field($blog_id, $user_id, $domain, $path, $site_id, $meta) {
switch_to_blog($blog_id);
$new_field_value = \'10\';
if ( !empty($_POST[\'blog\'][\'custom_limit_amount\']) )
$new_field_value = $_POST[\'blog\'][\'custom_limit_amount\'];
update_option( \'custom_limit_amount\', $new_field_value);
restore_current_blog();
}
add_action( \'wpmu_new_blog\', \'add_new_blog_field\' );
function edit_blog_field($blog_id) {
if ( !empty($_POST[\'blog\'][\'custom_limit_amount\']) )
$new_field_value = $_POST[\'blog\'][\'custom_limit_amount\'];
update_blog_option ($blog_id, \'custom_limit_amount\', $new_field_value);
restore_current_blog();
}
add_action( \'wpmu_blog_updated\', \'edit_blog_field\' );
最合适的回答,由SO网友:K. Tromp 整理而成
经过进一步研究,我找到了一个解决方案,结果证明我必须使用admin\\u init。。
function pg_save_custom_site_options(){
global $pagenow;
if( \'site-info.php\' == $pagenow && isset($_REQUEST[\'action\']) && \'update-site\' == $_REQUEST[\'action\'] )
{
if ( isset( $_POST[\'blog\'][\'custom_limit_amount\'] ) )
{
$new_field_value = intval( $_POST[\'blog\'][\'custom_limit_amount\'] );
if( is_int($new_field_value) ){
update_blog_option( $_POST[\'id\'], \'custom_limit_amount\', $new_field_value );
}
}
}
}
add_action(\'admin_init\', \'pg_save_custom_site_options\');