多站点:包含网络站点链接的全局菜单?

时间:2014-06-03 作者:okiedokey

我可以创建一个菜单

出现在网络中的每个页面上,并且

包含网络中存在的每个站点和页面?

我说的是以下结构:

主站点

示例第1页示例第2页

网络站点A

示例页面A1

示例页B1是否可以创建如下所示的菜单?

3 个回复
SO网友:Pat J

get_sites() 将获取多站点网络中的站点列表。然后您可以使用switch_to_blog()[*],get_posts() / get_pages(), 和restore_current_blog()[*]从各个网站获取页面。

我强烈建议使用update_site_option() 以减轻服务器上的负载。您可以将作业添加到wp_cron() 定期更新选项,或将操作添加到save_post (或一个或多个适当的Post Status Transition 挂钩,例如new_to_publishdraft_to_publish) 更新存储的菜单列表。将菜单列表保留在站点选项中的另一个优点是,您可以使用从网络中的任何站点访问它get_site_option().

当Multisite最初出现时,术语是site 属于blogs; 后来改为anetwork 属于sites, 但旧方法仍然出现在函数名中,如switch_to_blog()restore_current_blog().

SO网友:ShoutingWords

有一个函数get_blog_list() 由于如果网络有多个站点,则可能会消耗大量资源,因此目前不推荐使用该方法。查询wp_blogs 使用自定义查询的WP数据库中的表。

将以下代码添加到主题的函数中。php文件,你应该很好去。

/**
 * Build a list of all websites in a network
 */
function wp_list_sites( $expires = 7200 ) {
   if( !is_multisite() ) return false;

   // Because the get_blog_list() function is currently flagged as deprecated 
   // due to the potential for high consumption of resources, we\'ll use
   // $wpdb to roll out our own SQL query instead. Because the query can be
   // memory-intensive, we\'ll store the results using the 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\') );
      // Set the Transient cache to expire every two hours
      set_site_transient( \'multisite_site_list\', $site_list, $expires );
   }

   $current_site_url = get_site_url( get_current_blog_id() );

   $html = \'\' . "n";

   foreach ( $site_list as $site ) {
      switch_to_blog( $site->blog_id );
      $class = ( home_url() == $current_site_url ) ? \' class="current-site-item"\' : \'\';
      $html .= "t" . \'blog_id . \'"\' . $class . \'>\' . get_bloginfo(\'name\') . \'\' . "n";
      restore_current_blog();
   }

   $html .= \'\' . "nn";

   return $html;
}

SO网友:Aaron

多站点站点列表短代码插件怎么样?我在一个文本小部件中使用它,它生成了我想要的菜单。http://wordpress.org/plugins/multi-site-site-list-shortcode/

结束