【问题标题】:How to add default Widgets to a custom dynamic sidebar如何将默认小部件添加到自定义动态侧边栏
【发布时间】:2012-04-18 05:37:02
【问题描述】:

我在 WordPress 中使用此代码添加了我的自定义动态侧边栏

register_sidebar
(array(
'name' => __( 'My widget' ),
'id' => 'right-sidebar',
'description' => __( 'Widgets in this area will be shown on the right-hand side.' ),
'before_title' => '<h1>',
'after_title' => '</h1>'
));

现在我可以通过仪表板 -> 外观 -> 小部件在 WordPress 管理员中看到这个动态侧边栏。

当我激活主题时,默认情况下这个动态侧边栏不显示任何内容;要显示小部件(例如最近的帖子、页面、类别),我必须将它们拖到我的小部件动态侧边栏中。

但我希望 My Widget 动态侧边栏默认显示三个 Widget(Recent Posts、Pages、Category),类似于二十一或二十一中的动态侧边栏。

【问题讨论】:

  • 模组注意事项:这个问题更适合 WPSE。

标签: wordpress


【解决方案1】:

这很容易做到,使用dynamic_sidebar()the_widget()

这是显示默认内容的构造,如果没有小部件被添加到动态侧边栏:

<?php
if ( ! dynamic_sidebar( 'My_Widget' ) ) {
    // default content goes here
}
?>

因此,要将特定的Widgets 输出为默认内容,只需调用the_widget($widget, $instance, $args)。例如,要显示"Recent Posts" Widget

<?php
if ( ! dynamic_sidebar( 'My_Widget' ) ) {
    the_widget( 'WP_Widget_Recent_Posts' );
}
?>

(有关其他用法示例,请参阅链接的 Codex 参考资料,以及每个小部件的 $instance/$args 值。)

【讨论】:

    【解决方案2】:

    嗯,这是正常行为,您只需在主题中设置此侧边栏的默认内容即可。看一下二十一/sidebar.php,你可以做同样的事情:

    <?php if ( ! dynamic_sidebar( 'right-sidebar' ) ) : ?>
      Default content
    <?php endif; ?>
    

    别搞错了,侧边栏不是小部件,它是小部件区域。

    【讨论】:

    • 它在前端调用侧边栏,只有在管理员中,您在右侧边栏中拖动任何东西时,您才会看到输出。
    • 我再说一遍:你必须为你的侧边栏设置默认内容,wordpress 不能自动猜到这个......
    • 是的,我在问如何为我自己的侧边栏(右侧栏)添加默认小部件(例如最近的帖子、博客、页面等)
    • 所以,正如我在回答中所说,您可以通过修改主题轻松实现这一目标
    【解决方案3】:

    这是可能的,但不是在自动激活方面。 您需要在需要小部件(假设侧边栏)侧边栏的地方做的事情是真正的小部件就绪,并且管理员将新的侧边栏小部件弹出到阵容中,事情将自动切换到使用管理员指定的设置。

    所以是的,您可以将其作为默认设置。而不是自动激活...

    更多信息https://stackoverflow.com/a/3057665/716492

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      相关资源
      最近更新 更多