如何在主题激活期间添加文本小工具

时间:2014-03-17 作者:geoff swartz

我正在尝试将标题和文本集的文本小部件添加到自定义主题中的两个自定义侧栏中。但是,我找不到一个关于如何做的清晰演练。我在这里和那里看到了一些代码,但没有任何东西可以清楚地通过编程将文本小部件添加到侧栏的过程。

我看到了this 但它围绕着一个自定义小部件,这不是我想要做的。

编辑:我有两个侧边栏-左页脚和右页脚。这是我尝试过的,但没有成功。那么,有人能告诉我我做错了什么吗?

update_option( \'sidebars_widgets\', 
        array ( 
        \'footer-left\' => array ( 0 => array( \'title\' => \'Test1\', \'text\' => \'Test 1 Test\')), 
        \'footer-right\' => array ( 0 => array( \'title\' => \'Test2\', \'text\' => \'Test 2 Test\')), 
        ) );

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

您就快到了,除了每个小部件的设置与sidebars_widgets 选项,它只存储小部件“实例”。

尝试以下功能-您仍然需要使用register_sidebar, 但它减轻了在这些边栏上预先注册小部件的痛苦。它还可以确保任何现有的小部件;在此过程中,它们的设置不会丢失。

/**
 * Pre-configure and save a widget, designed for plugin and theme activation.
 * 
 * @link    http://wordpress.stackexchange.com/q/138242/1685
 *
 * @param   string  $sidebar    The database name of the sidebar to add the widget to.
 * @param   string  $name       The database name of the widget.
 * @param   mixed   $args       The widget arguments (optional).
 */
function wpse_138242_pre_set_widget( $sidebar, $name, $args = array() ) {
    if ( ! $sidebars = get_option( \'sidebars_widgets\' ) )
        $sidebars = array();

    // Create the sidebar if it doesn\'t exist.
    if ( ! isset( $sidebars[ $sidebar ] ) )
        $sidebars[ $sidebar ] = array();

    // Check for existing saved widgets.
    if ( $widget_opts = get_option( "widget_$name" ) ) {
        // Get next insert id.
        ksort( $widget_opts );
        end( $widget_opts );
        $insert_id = key( $widget_opts );
    } else {
        // None existing, start fresh.
        $widget_opts = array( \'_multiwidget\' => 1 );
        $insert_id = 0;
    }

    // Add our settings to the stack.
    $widget_opts[ ++$insert_id ] = $args;
    // Add our widget!
    $sidebars[ $sidebar ][] = "$name-$insert_id";

    update_option( \'sidebars_widgets\', $sidebars );
    update_option( "widget_$name", $widget_opts );
}
在您的情况下:

wpse_138242_pre_set_widget( \'footer-left\', \'text\',
    array(
        \'title\' => \'Test1\',
        \'text\' => \'Test 1 Test\',
        \'filter\' => false,
    )
);

wpse_138242_pre_set_widget( \'footer-right\', \'text\',
    array(
        \'title\' => \'Test2\',
        \'text\' => \'Test 2 Test\',
        \'filter\' => false,
    )
);

结束

相关推荐

Individual Widgets per Page

在我的Wordpress网站(仅限于页面,无帖子)中,我需要在侧边栏中放置一些静态blob。我们可以将这些“blob”称为小部件。至少他们会有一个固定的html内容,如“摘要1”、“摘要2”、“免责声明”、“foo策略”。。。我需要的是,在每一页上都有不同的安排。因此,这不仅仅是“单一”对“归档”,而是真正的“产品页面A”对“产品页面B”对“关于我们”对“服务条款”。。。我在考虑自定义元框,以便在单个编辑器页面上打开和关闭它们wp-admin/post.php?post=196&action=ed