前台侧边栏中存储当前发起小工具信息的数据库中的OPTION_NAME是什么?

时间:2010-08-25 作者:justjoe

在前端侧栏中存储当前启动小部件信息的数据库上的option\\u名称是什么?

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

解决了的。埃曼说的是对的。问题在于WordPress中小部件系统的配置。对于每个多实例小部件(如文本),信息以不同的选项名称存储,其中每个小部件的值以序列化方式存储。

诀窍在于如何存储序列化文本小部件的信息,这些信息有时具有特殊字符。我们必须使用heredoc。使用heredoc是为了避免字符串必须包含[\']和[“],因为两者不能同时在一行上使用。

$serialize_sidebar_widgets = <<< EOD
a:7:{s:19:"wp_inactive_widgets";a:0:{}s:9:"sidebar-1";a:1:{i:0;s:6:"text-3";}s:9:"sidebar-2";a:0:{}s:9:"sidebar-3";a:0:{}s:9:"sidebar-4";a:0:{}s:9:"sidebar-5";a:0:{}s:13:"array_version";i:3;}
EOD;

$serialize_widgets_text = <<< EOD
a:3:{i:2;a:0:{}i:3;a:3:{s:5:"title";s:5:"hello";s:4:"text";s:21:"saya hellokankamu yah";s:6:"filter";b:0;}s:12:"_multiwidget";i:1;}
EOD;
现在我们可以将它们存储在数据库中:

$wpdb->update( $wpdb->options, array( \'option_value\' => $serialize_sidebar_widgets ), array( \'option_name\' => \'sidebars_widgets\' ) );
$wpdb->update( $wpdb->options, array( \'option_value\' => $serialize_widgets_text ), array( \'option_name\' => \'widget_text\' ) );
PS:如果我们存储多实例小部件,那么我们应该记住这些小部件有自己的配置。例如,文本小部件存储在“widget\\u text”中

附言:Read how to use heredoc in PHP.

SO网友:EAMann

提要栏小部件存储在数据库中的多个位置。老实说,我认为在主题首次安装时,几乎不可能让它创建一个预填充的widgetized侧边栏。

但是,当您第一次安装主题时,仍然有一种方法可以设置默认小部件显示。如果查看默认的TwentyTen主题,您将看到它定义了一个“默认”小部件列表,如果用户没有动态侧栏,将加载这些小部件:

<div id="primary" class="widget-area" role="complementary">
    <ul class="xoxo">
    <?php
        /* When we call the dynamic_sidebar() function, it\'ll spit out
         * the widgets for that widget area. If it instead returns false,
         * then the sidebar simply doesn\'t exist, so we\'ll hard-code in
         * some default sidebar stuff just in case.
         */
        if ( ! dynamic_sidebar( \'primary-widget-area\' ) ) : ?>

            <li id="search" class="widget-container widget_search">
                <?php get_search_form(); ?>
            </li>

            <li id="archives" class="widget-container">
                <h3 class="widget-title"><?php _e( \'Archives\', \'twentyten\' ); ?></h3>
                <ul>
                    <?php wp_get_archives( \'type=monthly\' ); ?>
                </ul>
            </li>

            <li id="meta" class="widget-container">
                <h3 class="widget-title"><?php _e( \'Meta\', \'twentyten\' ); ?></h3>
                <ul>
                    <?php wp_register(); ?>
                    <li><?php wp_loginout(); ?></li>
                    <?php wp_meta(); ?>
                </ul>
            </li>

    <?php endif; // end primary widget area ?>
    </ul>
</div><!-- #primary .widget-area -->
此代码对搜索小部件、存档小部件和元小部件进行硬编码。很基本,但这意味着新博客总是会在侧边栏中显示一些有用的东西,即使所有者还没有机会自定义网站。

如果你想创建“当主题首次注册时自动安装的小部件列表”,那么这是最安全、最友好的方法。

结束

相关推荐