Переключение на другой блог в WordPress: использование функции switch_to_blog()

SWITCH_TO_BLOG() │ WP 3.0.0

Переключение на другой блог

Функция switch_to_blog() позволяет вам переключаться на другой блог в WordPress. Это может быть полезно, если вам нужно получить записи или другую информацию из других блогов. Вы также можете вернуться к предыдущему блогу с помощью функции restore_current_blog().

Важно помнить, что код плагинов или тем, который загружен с оригинально запрашиваемого сайта, не будет изменён при переключении.

Время выполнения функции

  • 1 раз — 0.00094 сек (медленно)
  • 50000 раз — 5.201680 сек (быстро)
  • PHP 7.4.8, WP 5.7.2

Хуки функции

  • switch_blog

Возвращаемое значение

Функция всегда возвращает true.

Использование

switch_to_blog( $new_blog_id, $deprecated );

Параметры

  • $new_blog_id (int) (обязательный) — ID блога, на который нужно переключиться.
  • $deprecated (true|false) — этот параметр не используется.
    • По умолчанию: null

Примеры использования

Пример 1: Переключение на один блог

Переключаемся на блог с ID 5, чтобы отобразить его записи, а затем возвращаемся к текущему блогу.

// переключаемся на блог 5
switch_to_blog( 5 );

// Получаем записи из блога 5
$myposts = get_posts();
foreach( $myposts as $post ){
    echo esc_html( $post->post_title ) .'
'; } wp_reset_postdata(); // возвращаемся к текущему блогу restore_current_blog();

Пример 2: Множественное переключение

Перед переключением на другой блог необходимо вернуться к текущему блогу...

foreach( $blog_ids as $blog_id ){
    switch_to_blog( $blog_id );

    // обрабатываем данные блога, на который мы переключились.

    restore_current_blog();
}

Примечание: Если вы не вызовете restore_current_blog() после каждого switch_to_blog(), WordPress может неправильно сформировать URL для сайта.

Пример 3: Глобальная переменная $SWITCHED

Когда вы используете switch_to_blog() вне WordPress, нужно, чтобы глобальная переменная $switched была определена. Переменная, указывающая ID блога, возможно, также не будет равна $blog_id, поскольку она используется ядром WP.

Пример будет работать неверно, если $switched не определён.

 1,
        'post_status'   => 'publish',
        'post_type'     => 'custom_post_type',
        'post_content'  => 'Содержимое записи здесь',
        'post_title'    => 'Заголовок записи здесь'
    )
);
?>

Примечания

  • См. также: restore_current_blog()
  • Глобальные переменные:
    • $wpdb — объект абстракции базы данных WordPress.
    • $blog_id — ID текущего блога.
    • $_wp_switched_stack — массив, хранящий историю переключений блогов.
    • $switched (true|false) — глобальная переменная, указывающая, произошло ли переключение.
    • $table_prefix — префикс таблицы базы данных.
    • $wp_object_cache — объект кеширования.

Изменения

  • С версии 3.0.0 — введена в WordPress.

Эта статья будет полезна для начинающих пользователей WordPress и поможет лучше понять, как работает функция switch_to_blog().

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *