Skip to content

Instantly share code, notes, and snippets.

@Mamaduka
Created June 12, 2020 12:16
Show Gist options
  • Save Mamaduka/562f772d42d44197902f7c608b0b9ae0 to your computer and use it in GitHub Desktop.
Save Mamaduka/562f772d42d44197902f7c608b0b9ae0 to your computer and use it in GitHub Desktop.
<?php
use CBOX\Upgrades\Upgrade;
use CBOX\Upgrades\Upgrade_Item;
use CBOX\Upgrades\Upgrade_Registry;
class CBOXOL_Upgrade_Nav_Menus extends Upgrade {
public $id = 'upgrade_nav_menus';
public $name = 'Group Nav Menus';
public function setup() {
$groups = BP_Groups_Group::get([
'per_page' => null,
'show_hidden' => true,
'fields' => 'ids',
] );
foreach ( $groups['groups'] as $group_id ) {
$this->push( new Upgrade_Item( $group_id, [ 'group_id' => $group_id ] ) );
}
}
public function process( $item ) {
$group_id = $item->get_value( 'group_id' );
$site_id = cboxol_get_group_site_id( $group_id );
if ( ! $site_id ) {
return new WP_Error( 'upgrade_skipped', 'Skipped: group has no site.' );
}
switch_to_blog( $site_id );
$locations = get_theme_mod( 'nav_menu_locations' );
$menu_id = isset( $locations['primary'] ) ? (int) $locations['primary'] : 0;
$nav_items = get_term_meta( $menu_id, 'cboxol_custom_menus', true );
// Convert to bail eary and return WP_Error.
if ( $menu_id && ! empty( $nav_items ) ) {
$group = groups_get_group( $group_id );
$group_type = cboxol_get_group_group_type( $group_id );
// Update Group Profile URL.
wp_update_nav_menu_item(
$menu_id,
$nav_items['group'],
array(
'menu-item-title' => '[ ' . $group_type->get_label( 'group_home' ) . ' ]',
'menu-item-url' => bp_get_group_permalink( $group ),
'menu-item-position' => 1,
)
);
// Update home URL.
wp_update_nav_menu_item(
$menu_id,
$nav_items['home'],
array(
'menu-item-title' => __( 'Home', 'cbox-openlab-core' ),
'menu-item-url' => home_url( '/' ),
'menu-item-position' => 1,
)
);
}
restore_current_blog();
return true;
}
}
add_action( 'bp_init', function() {
$upgrade = new CBOXOL_Upgrade_Nav_Menus();
Upgrade_Registry::get_instance()->register( $upgrade->id, $upgrade );
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment