Wordpress dynamic_sidebar无法解析,删除更改

时间:2016-09-28 10:44:34

标签: php wordpress wordpress-theming

嗨其他程序员,

我对Wordpress相对较新,因为我通常使用Typo3,所以我对WP中的自定义侧边栏有疑问。

我在functions.php中有以下代码

function custom_sidebars()
{

  register_sidebars(4, array
  (
    'name' => __('Panel Startseite %d', 'me'),
    'id' => 'panel-home-%d',
    'description' => 'Widget Position for home panel',
    'class' => 'panel-sidebar',
    'before_widget' => '<div class="widget-panel-%d">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="panel-title">',
    'after_title' => '</h2>'
  ));

  $args2 = array
  (
    'name' => __('Short Bio Sidebar', 'me'),
    'id' => 'shortbio-id',
    'description' => 'Widget Position for short bio',
    'class' => 'shortbio-sidebar',
    'before_widget' => '<div class="widget-bio">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
  );
  register_sidebars(1, $args2);

}

add_action('widgets_init', 'custom_sidebars');

我想在我的主页和页脚中添加4个面板,以便作者添加生物或更改它。

这是我的index.php

中的代码
<div id="main">
  <div class="wrapper">
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-1'); ?>
      </div>
    </div>
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-2'); ?>
      </div>
 ... and so on

在给定位置的footer.php中也有相同的实现。

我的问题是:

  • 我通过后端菜单主题添加的内容 - &gt;窗口小部件不会显示,并在下次打开后端时被删除。
  • wp-content / debug.log中没有错误,我在激活wp-config.php中的选项后修复了所有常见错误

我如何解决这个问题,我的基本思维错误是什么?

最诚挚的问候sKylo

1 个答案:

答案 0 :(得分:0)

你的代码都很好。只有一个错误,你使用%d来连接你的id之后的小数。但这不是必需的,因为%d会自动添加到提供的ID中。请在本答复的末尾找到codex链接。

所以,我从代码的id部分删除了%d,现在它可以工作了。

<强>解决方案:

function custom_sidebars()
{

  register_sidebars(4, array
  (
    'name' => __('Panel Startseite %d', 'me'),
    'id' => 'panel-home',
    'description' => 'Widget Position for home panel',
    'class' => 'panel-sidebar',
    'before_widget' => '<div class="widget-panel">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="panel-title">',
    'after_title' => '</h2>'
  ));

  $args2 = array
  (
    'name' => __('Short Bio Sidebar', 'me'),
    'id' => 'shortbio-id',
    'description' => 'Widget Position for short bio',
    'class' => 'shortbio-sidebar',
    'before_widget' => '<div class="widget-bio">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
  );
  register_sidebars(1, $args2);

}

add_action('widgets_init', 'custom_sidebars');

<div id="main">
  <div class="wrapper">
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home'); ?>
      </div>
    </div>
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-2'); ?>
      </div>
 ... and so on

您无需将%d添加到register_sidebars的id。请阅读codex, 它说:

在第一个之后,

“%d”自动添加到提供的“id”值;例如,“Sidebar-1”,“Sidebar-2”,“Sidebar-3”等等。