переключиться на блог() в шорткоде WordPress
Используя многосайтовую сеть WordPress, мне нужно получить доступ к пользовательским типам сообщений с нашего основного сайта с помощью шорткода.
Например, наш основной сайт (ID 1
) - это место, где хранятся пользовательские типы сообщений (тематические исследования). В functions.php У меня есть следующее:
//[casestudy]
add_shortcode( 'casestudy', 'casestudy_shortcode' );
function casestudy_shortcode( $atts ) {
$a = shortcode_atts( array(
'id' => ''
), $atts );
switch_to_blog(1);
//Get fields from custom post type with Advanced Custom Fields Pro
//and return HTML output with them
restore_current_blog();
}
Затем вызовите шорткод с помощью [casestudy id="123"]
, где идентификатор - это идентификатор публикации тематического исследования.
Проблема в том, что это возвращает HTML-код тематического исследования нормально, но нарушает некоторые функции страницы, а также заполняет виджет "последние сообщения" сообщениями в блоге основного сайта.
Есть какие-нибудь идеи о том, что происходит не так? Спасибо.
1 answers
Добавление моего комментария в качестве ответа:
Читая комментарии к коду операции, похоже, что restore_current_blog()
никогда не вызывается, потому что HTML возвращается перед его вызовом.
Убедитесь, что часть return
является последней строкой там.