WordPress MultiSite:在所有子博客上拥有相同的主博客页眉和页脚

时间:2014-03-28 作者:mathiregister

我正在努力做到以下几点:

我有一个主博客和几十个子博客。我希望所有的子博客都使用相同的主题(或子主题,还不确定),但在所有子博客上都有相同的主博客导航项?页脚也一样。

我是怎么做到的?

这是我的主要博客和登录页

enter image description here

如果我单击子博客并选择一个子博客,我只想让内容区域受到影响,那么整个网络的页眉和页脚应该保持不变。

enter image description here

在子博客的内容区域内,我想使用子博客的页面和帖子。

正确的方法是什么?

更新:

<ul role="navigation">
    <?php

        //wp_list_pages(\'title_li=&depth=1&exclude=42,311\');

        $args = array(
            \'authors\'      => \'\',
            \'child_of\'     => 0,
            \'date_format\'  => get_option(\'date_format\'),
            \'depth\'        => 1,
            \'echo\'         => 0,
            \'exclude\'      => \'42,311\',
            \'include\'      => \'\',
            \'link_after\'   => \'\',
            \'link_before\'  => \'\',
            \'post_type\'    => \'page\',
            \'post_status\'  => \'publish\',
            \'show_date\'    => \'\',
            \'sort_column\'  => \'menu_order, post_title\',
            \'title_li\'     => \'\', 
            \'walker\'       => \'\'
        );

        $menu = wp_list_pages( $args );
        update_option(\'network_menu\', $menu);
        echo $menu;
    ?>
</ul>
在我的孩子主题中,我会:

<ul role="navigation">
    <?php 
        $menu = get_option(\'network_menu\');
            echo $menu;
    ?>
</ul>

3 个回复
最合适的回答,由SO网友:Douglas.Sesar 整理而成

您可以使用switch_to_blog() 作用

切换活动日志,直到用户调用restore\\u current\\u blog()函数。如果需要从其他博客中获取帖子或其他信息,则此函数非常有用,然后可以在使用restore\\u current\\u blog()后切换回。使用此功能不会加载仅在您切换到的博客上运行的插件。

因此,您可以编辑您的主题,以便始终从主博客中提取一些页眉和页脚内容,但仍保留子博客的内部内容。

在主题的标题中。php和页脚。php文件(可能还有其他一些模板文件**),将switch_to_blog($id_of_main_blog) 在抓取站点导航和位置的挂钩/功能之前restore_current_blog() 之后

**您需要根据主题调整确切的位置。

SO网友:JPollock

我要做的是创建一个在一个站点上使用的父主题,并为所有其他站点创建该主题的子主题。在父主题的标题a中,您可以执行常规的wp\\u nav\\u menu()调用来构建菜单,除非您不回显它。

相反,将菜单返回到变量中,将其传递到update\\u选项,然后回显它。在子主题的标题中。php,将所有这些替换为调用get\\u option(),并回显结果。

父主题:

     $args = array(\'echo\' => false);
     $menu = wp_nav_menu( $args);
     update_option(\'network_menu\', $menu);
     echo $menu;
子主题:

     $menu = get_option(\'network_menu\');
     echo $menu;
这样做的效果是,您将有一个站点,在其中使用菜单系统控制网络中每个站点的菜单。

SO网友:jeanpier_re

最灵活的方法是将此功能包装到插件中。如果你把它放在你的mu插件文件夹中,它将自动在所有网站上使用。或者,您可以通过网络激活它来实现相同的效果。这种方法的优点是,您可以轻松地打开或关闭它,并使站点的这方面模块化,这有助于主题测试。

来自法典

将当前博客切换到其他博客。如果需要从其他博客获取帖子或其他信息,请将\\u切换到\\u blog()。

之后可以使用restore\\u current\\u blog()切换回。请注意,此函数仅反转上一次博客切换操作,通常是最近调用switch\\u to\\u blog()。请参阅下面的示例,了解在使用多个switch\\u to\\u blog()时如何继续。

有些人说switch\\u to\\u blog()需要大量资源,但我在测试期间没有遇到任何问题。

Andrea R写了一篇plugin 这通过使用WordPress缓存来解决这个问题,然后在更新时刷新缓存,但下面的方法更灵活。

我将绘制一个基本示例,您可以在此基础上进行构建。它实际上没有向页眉或页脚添加任何内容,因此您需要使用插件api连接到主题中。

<?php
/**
 * Plugin Name: Header-Footer
 * Plugin URI: example.com
 * Description: 
 * Author:
 * Author URI:
 */


$main_site = 1;

function make_menu() 
{
    $args = array(
            \'authors\'      => \'\',
            \'child_of\'     => 0,
            \'date_format\'  => get_option(\'date_format\'),
            \'depth\'        => 1,
            \'echo\'         => 0,
            \'exclude\'      => \'42,311\',
            \'include\'      => \'\',
            \'link_after\'   => \'\',
            \'link_before\'  => \'\',
            \'post_type\'    => \'page\',
            \'post_status\'  => \'publish\',
            \'show_date\'    => \'\',
            \'sort_column\'  => \'menu_order, post_title\',
            \'title_li\'     => \'\', 
            \'walker\'       => \'\'
        );

        $menu = wp_list_pages( $args );
        update_option(\'network_menu\', $menu);
        echo $menu;

}
// Test if we\'re on a sub-site
if (!is_main_site())
{
    //Switch to the main site
    switch_to_blog( $main_site );       
        make_menu();
    restore_current_blog();
} 
// Else use normal methods
else
{
    make_menu();
}
祝你好运!

结束

相关推荐

Should I use multisite?

简而言之,我开始为我的客户提供廉价的网站服务。我开发了5个易于使用的WordPress主题。每个主题附带以下内容:主页-静态图像或图像旋转木马和简介副本</关于-静态图像和关于复制博客联系人-谷歌地图和联系人表单小部件(例如推特提要)My question我希望注册过程完全自动化。我还希望能够快速更新WordPress的新版本并添加新主题。为此,您会推荐WordPress Multisite吗?如果我让数百个站点运行一个数据库,我会遇到问题吗?我有终极云托管TSO HOST, 因此,空间和需求不应成