У меня есть плагин MU, активный в сети с этой небольшой функцией, чтобы запросить меню 4 с основного сайта в моей сети. На главном сайте в сети (1) все работает так, как ожидалось.
На субсайтах в сети (2,3,4) меню не отображается (поскольку у меня есть резервный набор в false, и меню не найдено).
Мне интересно, если я что-то делаю здесь неправильно, или если что-то большее идет не так.
/** * Multisite menu */ function wp_multisite_nav_menu() { global $blog_id; $args = array( 'menu' => 4, 'fallback_cb' => false, 'menu_class' => 'main-nav', 'depth' => 0, ); if ( ! is_multisite() || 1 == $blog_id ) { wp_nav_menu( $args ); return; } // switch to blog, and query switch_to_blog( 1 ); wp_nav_menu( $args ); // switch back to original blog restore_current_blog(); }
Я вижу, что switch_to_blog правильно переключается, так как я могу получить данные с основного сайта с помощью get_bloginfo( 'name' );
и get_the_title( 123 );
без каких-либо проблем.
В качестве альтернативы, если это не лучший способ сделать это – я готов к дополнительным решениям.
После небольшой отладки я смог сузить это до следующего:
Меню, которое я создал для отображения на каждом сайте в сети, состояло из пользовательских типов сообщений, которые не были зарегистрированы ни на одном другом дочернем сайте, а только на основном сайте (1).
По какой-либо причине пользовательский тип сообщения должен быть зарегистрирован на каждом сайте в сети, где вы будете отображать меню (2,3 и т. Д.).
Это можно сделать так же, как это было сделано на родительском сайте верхнего уровня (1), но show_ui
на false внутри вызова register_post_type
, чтобы предотвратить появление пользовательского типа сообщения в меню администратора дочернего сайта.