有没有办法在没有博客的情况下运行wordpress多站点?

时间:2013-05-25 19:16:23

标签: wordpress

我有兴趣在没有博客根级别的情况下设置多站点安装。我的网站结构如下

http://www.group-site.com/blog/

http://www.group-site.com/division-site-one/blog/

http://www.group-site.com/division-site-two/blog/

http://www.group-site.com/division-site-three/blog/

依旧......

所以我的群组网站博客托管在blg文件夹中,我的嵌套分区网站将博客放在他们的文件夹中。

这可能吗?

由于

1 个答案:

答案 0 :(得分:1)

根据我的经验,我只是将一个占位符页面放在一个简单的主题上,并阻止root用robots.txt索引。或者在主题中以root身份列出您的所有博客,然后再次使用robots.txt

阻止它

下面的函数(在主题的functions.php文件中)将输出所有博客的列表,并且可以在root用户处使用整个多站点的目录:

<?php

// Automatic list of all sites of the MS isntall, except for the main site (ID 1)
// and output by shortcode [bloglist]

 // Output a single menu item
function projects_menu_entry($id, $title, $link_self)
{
    global $blog_id;
    $out = '';

    if ($link_self || $id != $blog_id) {
        $out .= '<li>';
        if ($id == $blog_id) {
            $out .= '<strong>';
        }
        $url = get_home_url($id);
        if (substr($url, -1) != '/') {
            // Note: I added a "/" to the end of the URL because WordPress
            // wasn't doing that automatically in v3.0.4
            $url .= '/';
        }

        $out .= '<a href="' . $url . '">' . $title . '</a>';
        if ($id == $blog_id) {
            $out .= '</strong>';
        }

        $out .= '</li>';
    }

    return $out;
}

// Output the whole menu
// If $link_self is false, skip the current site - used to display the menu on the homepage
function projects_menu($link_self = true)
{
    global $wpdb;
    $out = '<ul>';

    $out .= projects_menu_entry(1, 'Home', $link_self);

    $blogs = $wpdb->get_results("
        SELECT blog_id
        FROM {$wpdb->blogs}
        WHERE site_id = '{$wpdb->siteid}'
        AND spam = '0'
        AND deleted = '0'
        AND archived = '0'
        AND blog_id != 1
        // add another blog_id for any other blog you want to hide like below
        // AND blog_id != 19
    ");

    $sites = array();
    foreach ($blogs as $blog) {
        $sites[$blog->blog_id] = get_blog_option($blog->blog_id, 'blogname');
    }

    natsort($sites);
    foreach ($sites as $blog_id => $blog_title) {
        $out .= projects_menu_entry($blog_id, $blog_title, $link_self);
    }
    $out .= '</ul>';

    return $out;
}

// Adds a [bloglist] shortcode

function bloglist_shortcode($atts)
{
    return projects_menu(false);
}

add_shortcode('bloglist', 'bloglist_shortcode');

?>