переключиться на блог() в шорткоде 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-код тематического исследования нормально, но нарушает некоторые функции страницы, а также заполняет виджет "последние сообщения" сообщениями в блоге основного сайта.

Есть какие-нибудь идеи о том, что происходит не так? Спасибо.

Author: wadclapp, 2017-03-07

1 answers

Добавление моего комментария в качестве ответа:

Читая комментарии к коду операции, похоже, что restore_current_blog() никогда не вызывается, потому что HTML возвращается перед его вызовом.

Убедитесь, что часть return является последней строкой там.

 2
Author: birgire, 2017-03-17 16:04:43