这是一个基于Tom J Nowell的想法和答案编写的解决方案。它将Wordpress Multisite安装中所有站点的排序列表打印为简单的行(用管道分隔)。
要运行此解决方案,请编辑当前选定的主题并选择shortcodes.php
从右侧边栏。在该文件末尾附近,首次出现之前add_shortcode
调用添加以下函数:
function theme_list_all_network_sites()
{
global $wpdb;
$result = \'\';
$sites = array();
$blogs = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->blogs WHERE spam = \'0\' AND deleted = \'0\' and archived = \'0\' and public=\'1\'"));
if(!empty($blogs))
{
foreach($blogs as $blog)
{
$details = get_blog_details($blog->blog_id);
if($details != false)
{
$url = $details->siteurl;
$name = $details->blogname;
if(!(($blog->blog_id == 1) && ($show_main != 1)))
{
$sites[$name] = $url;
}
}
}
ksort($sites);
$count = count($sites);
$current = 1;
foreach($sites as $name=>$url)
{
$result.= \'<a href="\'.$url.\'">\'.$name.\'</a>\';
$result.= ($current == $count) ? "\\n" : \' | \';
++$current;
}
}
return $result;
}
然后向下滚动到文件末尾,最后出现
add_shortcode
添加:
add_shortcode(\'network_list\', \'theme_list_all_network_sites\');
点击
Update File
保存更改。
现在,每当有人使用[network_list]
在帖子、页面或主题元素中,将打印一个网站列表来代替该短代码。