【问题标题】:Different sidebars for different pages on WordpressWordpress 上不同页面的不同侧边栏
【发布时间】:2012-06-15 19:27:54
【问题描述】:

我正在尝试在 WordPress(版本 3.3.2)上设计一个主题,但在让侧边栏在某些页面上显示一组不同的小部件时遇到了一些问题。

我已经尝试了几个在线教程,尤其是这个http://www.rvoodoo.com/projects/wordpress/wordpress-tip-different-sidebars-on-different-pages/,但不幸的是,当我移动到不同的页面时,侧边栏没有变化

我在我的 functions.php 上注册了两个边栏,如下所示,一个我认为是主边栏,另一个是自定义边栏,我还为这些边栏添加了不同的小部件。

<?php register_sidebar( //register sidebar
    array(
        'name' => 'Right-side',
        'before_widget' => '<div class="rightwidget">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
        ));


        register_sidebar( //register second sidebar
    array(
        'name' => 'Second-right',
        'before_widget' => '<div class="rightwidget">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
        ));

?>

之后,我创建了文件 sidebar.phpsidebar-second.php 以便能够调用它们。

sidebar.php

<div id="sidebar">
    <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Right-side')) : ?>
        <h3 class="widget-title">No widget added</h3>
        <p> Please add some widgets</p>

    <?php endif; ?>
    </div><!--ends sidebar-->

sidebar-second.php

 <div id="sidebar">
    <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Second-right')) : ?>
        <h3 class="widget-title">No widget added</h3>
        <p> Please add some widgets</p>

    <?php endif; ?>
    </div><!--ends sidebar-->

然后我添加了用以下条件替换我的&lt;?php get_sidebar() ; ?&gt; 语句

<?php if( is_page('225') ) : ?>
<?php dynamic_sidebar('second'); ?>
<?php else : ?>
<?php get_sidebar() ; ?>
<?php endif ; ?>

但是,只有添加到 sidebar.php 的小部件会显示在每个页面上。关于我如何改变这一点的任何帮助,或者我可能做错了什么的指针。谢谢。

【问题讨论】:

  • 我刚刚意识到您的代码正在尝试查找带有 slug “225”而不是 id 225 的页面。尝试从 225 左右删除引号,看看是否这样工作。
  • 我刚试过,结果还是一样。
  • 您是否进行了一些调试以确保您在您认为的页面上?例如,&lt;?php echo $post-&gt;ID ?&gt; 并确保打印出“225”?
  • 我刚刚运行了代码,发现它为每篇博文打印了一个数字,而不是地址栏上显示的 225。我还注意到侧边栏在应用于其他页面时会发生变化,但不会在此页面上发生变化。请注意,有问题的页面是我的博客页面
  • 你的意思是这是一个博客目录页面,比如index.php或者archive.php?或者这是一篇特定的博文?

标签: wordpress-theming widget sidebar


【解决方案1】:

我看起来你正在使用&lt;?php dynamic_sidebar('second'); ?&gt;,而你应该使用&lt;?php get-sidebar('second'); ?&gt;

get_sidebar('foo') 的作用是在主题的根目录中查找名为“sidebar-foo.php”的文件并将其包含在内。另一方面,dynamic_sidebar('bar') 查找已注册的侧边栏:

<?php register_sidebar( array( 'name' => 'bar' ... ) ) ?>

希望这会有所帮助!

【讨论】:

  • 感谢您的提示。我刚刚将&lt;?php dynamic_sidebar('second') ; ?&gt; 更改为&lt;?php get_sidebar('second') ; ?&gt;,但它仍然不起作用。
【解决方案2】:

你为什么不使用Custom Sidebar Plugin

它真的很容易使用,不需要任何编码

【讨论】:

    【解决方案3】:

    您有两个侧边栏。当您想在特定页面上使用侧边栏第二个文件时,而不是调用

    <?php get_sidebar('second') ; ?> 
    

    试试

    <?php get_sidebar('sidebar-second.php') ; ?>
    

    这应该可以解决问题

    【讨论】:

    • 试图格式化代码,不完全确定这是否是您想要的,请查看 - 并在需要时更正 - 编辑:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2012-07-09
    • 2013-09-01
    • 1970-01-01
    • 2021-03-03
    • 2020-08-01
    相关资源
    最近更新 更多