Escribí una función que cambia la navegación principal en función de si el usuario está conectado o no y en función de su estado de membresía, si lo está. Aquí está la función:
function custm_navigation_args($args) {
if(is_user_logged_in()) {
$memid = get_current_user_id();
if ($memid != 0) {
global $wpdb;
$mems = $wpdb->get_results("select statement that grabs all users with specific membership ids");
$memb_group = array();
ksort($memb_group, SORT_NUMERIC);
if (!empty($mems)) {
foreach ($mems as $key => $item) {
$memb_meta = get_object_vars($item);
foreach ($memb_meta as $meta_in => $membdetails) {
$memb_group[$item->user_id]['memship'] = $memb_meta['memberships'];
}
}
$membprof="";
foreach($memb_group as $mmm) {
$membprof .= $mmm['memship'];
if (!isset( $args['theme_location']) || $args['theme_location'] == "") {
$args['theme_location'] = 'primary-menu';
}
if ($membprof == '2017' || $membprof == '2048') {
$args['menu'] = 36;
} else if ($membprof == '2031' || $membprof == '2050') {
$args['menu'] = 38;
} else if ($membprof == '44' || $membprof == '1557' || $membprof == '1936') {
$args['menu'] = 2;
} else if ($membprof == '2326' || $membprof == '536') {
$args['menu'] = 41;
} else if ($membprof == '2364' || $membprof == '2371') {
$args['menu'] = 42;
}
}
} else {
$args['menu'] = 37; //Logged Out Menu
}
}
return $args;
}
}
add_filter( 'wp_nav_menu_args', 'custm_navigation_args' );
La función funciona, pero cada vez que un usuario inicia sesión, el registro de errores se actualiza con las siguientes advertencias:
- Advertencia de PHP: propiedad no definida: stdClass::$menu en ./wp-includes/nav-menu-template.php en la línea 125
- Advertencia de PHP: propiedad no definida: stdClass::$theme_location en ./wp-includes/nav-menu-template.php en la línea 129
- Advertencia de PHP: propiedad no definida: stdClass::$theme_location en ./wp-includes/nav-menu-template.php en la línea 134
- Advertencia de PHP: Propiedad no definida: stdClass::$container en ./wp-includes/nav-menu-template.php en la línea 175
- Advertencia de PHP: propiedad no definida: stdClass::$ depth en ./wp-includes/nav-menu-template.php en la línea 228
- Advertencia de PHP: propiedad no definida: stdClass::$menu_class en ./wp-includes/nav-menu-template.php en la línea 247
Verifiqué con wp_registered_nav_menus que el nombre de la ubicación del tema es correcto. Puedo eliminar la declaración IF que define el tema_ubicación, pero sigo obteniendo el mismo resultado en el registro de errores. Lo que también es interesante es que el registro de errores se actualiza exactamente 3 veces con todas las mismas advertencias. Estoy usando el tema Divi.
¿Cómo puedo limpiar estas advertencias y mantener la función funcionando según lo previsto?
.