多站点上的一些小部件未显示在特定主题的模板中

时间:2013-03-09 作者:hollsk

我有很多定制的小部件,它们看起来都差不多。我有一个有3个博客的多站点博客。这些小部件被单独配置为在所有3个博客上显示,并在外观->小部件中进行自己的设置。

所有小部件通常显示在第一个主博客上。在其他博客上,some 的小部件不显示。我在下面给出了两个小部件的示例-gem_countryFilter_Widget() 到处都是,但gem_joinConversation_Widget() 只出现在主博客上,尽管它在所有博客上都进行了配置,并且是与其他小部件相同的侧栏的一部分。我看不出两者之间有什么区别,所以我对问题所在感到困惑。

这些小部件也在以前的自定义主题中使用,尚未修改。在前一个主题中,这些小部件按预期出现在所有博客上。我试着复制函数。php文件(声明小部件的地方)直接从旧主题转换到新主题,但没有效果——一些小部件只是在非主要博客上消失了。

主题就是问题,这似乎是合乎逻辑的,但我在哪里可以找到诊断它的答案,这是一个空白。以前有人遇到过类似的问题吗?

sample code:

/**join conversation**/
class gem_joinConversation_Widget extends WP_Widget {
    function gem_joinConversation_Widget() {
        parent::WP_Widget(false, \'Join the Conversation\');
    }
function form($instance) {
        // outputs the options form on admin
        echo \'<p>Displays the social and sharing icons in the sidebar. There are no options for this widget.</p>\';
    }
function update($new_instance, $old_instance) {
        // processes widget options to be saved
        return $new_instance;
    }
function widget($args, $instance) {
        // outputs the content of the widget
        gem_joinConversation();
    }
}
register_widget(\'gem_joinConversation_Widget\');
function gem_joinConversation($args = array()){
    ?>
    <ul class="featurebox">
        <li>
            <div class="widget text-3">
                <h2>Join the conversation</h2>
                <div class="body">
                    <div class="textwidget">
                        <div class="social-icons">
                            <a href="/" target="_blank"><img width="27" height="27" src="/wp-content/themes/gem_main/images/icon-gem.png" alt="Corporate"/></a>
                            <a href="/" target="_blank"><img width="27" height="27" src="/wp-content/themes/gem_main/images/icon-facebook.gif" alt="Facebook"/></a>
                        </div>
                    </div>
                </div>
            </div>
        </li>
    </ul>           
    <?php
}

/**Country filter**/
class gem_countryFilter_Widget extends WP_Widget {
    function gem_countryFilter_Widget() {
        parent::WP_Widget(false, \'Country filter\');
    }
function form($instance) {
        // outputs the options form on admin
        echo \'<p>Displays a dropdown list of blogs. There are no options for this widget.</p>\';
    }
function update($new_instance, $old_instance) {
        // processes widget options to be saved
        return $new_instance;
    }
function widget($args, $instance) {
        // outputs the content of the widget
        gem_countryFilter();
    }
}
register_widget(\'gem_countryFilter_Widget\');
function gem_countryFilter($args = array()){
    ?>
    <ul class="country-filter">
        <li>
            <h2>Filter by country</h2>
            <ul class="country-filter-list">
                <li><a href="#" class="country-brazil">Brazil</a></li>          
                <li><a href="#" class="country-china">China</a></li>
                <li><a href="#" class="country-france">France</a></li>
            </ul>
        </li>
    </ul>       
    <?php
}

1 个回复
最合适的回答,由SO网友:hollsk 整理而成

我为此获得了风滚草徽章:(

FWIW最终通过从备份中恢复数据库并使用新的主题名称和目录重新创建主题文件来“修复”这一问题。这似乎比它应该付出的努力多得多。我认为某个地方存在某种奇怪的数据库损坏/冲突,使得无法使用已经使用过的小部件,然后在放回去之前从侧边栏中删除。

我找不到基于代码的解决方案,手动从数据库中清除对小部件的引用没有任何效果。我现在害怕删除和更换小部件/

结束

相关推荐

Using Multisite with a CDN?

我运行的Wordpress多站点由Bluehost托管,只有5个低容量站点。我的站点加载时间最近很糟糕,所以我使用了延迟加载、DB优化和Smush。它和快速缓存来尝试解决速度问题。花了很多时间寻找一个好的CDN,显然,没有一个CDN可以轻松地用WP Multisite实现。每一个都需要W3 Total缓存,无法通过网络激活。关于如何创建镜像静态页面等,有一些看起来很冒险的教程,但没有任何内容可以让安装变得清晰简单。我选择的CDN是MaxCDN,但即使它们也需要W3TC。有人对如何在云中或CDN服务中安装多