Список сайтов в вашей сети

Очень полезная функция для тех, использует сеть веб сайтов с помощью функции WordPress 3.+ (мультисайт). Вам нужно выводить список всех сайтов в сети?Задача просто решается с помощью следующего кода..

Первым шагом, конечно, нужно добавить функции в файл functions.php вашей темы.
function wp_list_sites( $expires = 7200 ) {
   if( !is_multisite() ) return false;
 
   // Так как функция get_blog_list() не рекомендуется к использованию по причине
   // потенциально высокого потребления ресурсов, то мы используем
   // $wpdb для формирования своего запроса SQL. Так как запрос может
   // интенсивно использовать память, то результат будет сохраняться с помощью Transients API
   if ( false === ( $site_list = get_transient( 'multisite_site_list' ) ) ) {
      global $wpdb;
      $site_list = $wpdb->get_results( $wpdb->prepare('SELECT * FROM wp_blogs ORDER BY blog_id') );
      // Устанавливаем срок хранения кеша Transient равным двум часам
      set_site_transient( 'multisite_site_list', $site_list, $expires );
   }
 
   $current_site_url = get_site_url( get_current_blog_id() );
 
   $html = '
<ul id="network-menu">' . "\n";
 
   foreach ( $site_list as $site ) {
      switch_to_blog( $site->blog_id );
      $class = ( home_url() == $current_site_url ) ? ' class="current-site-item"' : '';
      $html .= "\t" . '
<li id="site-' . $site->blog_id . '" '="" .="" $class=""><a href="' . home_url() . '">' . get_bloginfo('name') . '</a></li>
 
' . "\n";
      restore_current_blog();
   }
 
   $html .= '</ul>
 
<!--// end #network-menu -->' . "\n\n";
 
   return $html;
}

После сохранения файла, следующий код будет выводить все сайты в вашей сети. Просто скопируйте его в вашу тему туда, где планируете выводить список.
<?php
// Меню сети мультисайта
$network_menu = wp_list_sites();
if( $network_menu ):
?>
<div id="network-menu">
   <?php echo $network_menu; ?>
</div>
 
<!--// end #network-menu -->
<?php endif; ?>

Теги:
Список сайтов
Добавлено: 01 Мая 2018 20:01:41 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...