不同页面和帖子的不同小部件

时间:2014-08-29 19:51:20

标签: php wordpress post widget blogs

我在Wordpress中的博客页面使用的是特定的小部件,但我想在博客中使用不同的小部件来发布帖子。

我使用了一个示例(https://gist.github.com/anonymous/1308851)在sidebar.php。

中编写代码
<?php

if ( 'content' != $current_layout ) :
?>
    <?php   
    //for rest of posts
    if (is_active_sidebar('blog_widget_area') ) : ?>
        <div id="secondary" class="blog_widget_area bordered" role="complementary">
            <?php dynamic_sidebar( 'blog_widget_area' ); ?>

        </div><!-- #secondary .widget-area -->
    <?php endif;

    //for specific post "Loyalty Program Trends in the Restaurant Industry"
    if (is_active_sidebar('loyalty_programs_widget_area') && is_single('4063') ) : ?>
            <div id="secondary" class="blog_widget_area bordered" role="complementary">
            <?php dynamic_sidebar( 'loyalty_programs_widget_area' ); ?>
            </div>      
    <?php endif;

?>

<?php endif; ?>

但是,我无法在该特定帖子中显示第二个小部件....

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

在尝试下面的解决方案之前,请确保已经在sideabar上加载了一些数据/小部件 loyalty_programs_widget_area。

解决方案1 ​​

// use array inside is_single function
<?php if (is_active_sidebar('loyalty_programs_widget_area') && 
          is_single( array('4063','4063-page-name-here') )   ) : ?>
<?php endif; ?>

解决方案2

// put separate if check inside sidebar
<?php if (is_active_sidebar('loyalty_programs_widget_area') ) : ?>

      if( is_single('4063') ) {  } or
      if( is_single(array('4063','pagename')) ) {  }

<?php endif; ?>

其他可能的解决方案:

尝试:

- 临时停用所有插件以缩小范围并可能解决问题。如果问题消失,请单独激活它们以找到罪魁祸首?

- 通过在wp-content / themes中重命名当前主题的文件夹,暂时切换到默认主题(Twenty Ten)。想法是强制WordPress回退到默认主题以排除任何特定于主题的问题?

有关详细信息,请阅读有关“侧边栏”的官方文档 注意: is_single()提供了不同的其他方法来检查帖子ID或名称(当启用永久链接时)

- is_single(array(17,'beef-stew','Irish Stew'));
- is_single('17'); or is_single(17);

请尝试以下代码:

<?php // only show on 31 post not any other. ?>
<?php if (  is_single('31') ) { ?>


        <?php // if blog_widget_area2 is active then show otherwise don't :) ?>
        <?php if ( is_active_sidebar( 'blog_widget_area2' ) ) : ?>
            <div class="template_2_widget_area bordered">
                <?php dynamic_sidebar("blog_widget_area2"); ?>
            </div>
        <?php endif; ?>


<?php }else{  // otherwise load this sidebar ?>


    <div class="template_2_widget_area bordered">
        <?php dynamic_sidebar("blog_widget_area"); ?>
    </div>



<?php } ?>

答案 1 :(得分:0)

在codewizz的帮助下(感谢codewizz!),我们让它发挥作用。我们需要改变的是将代码从sidebar.php移到single.php。但是,它的编码方式,它在帖子的侧边栏上显示第一个小部件和第二个小部件。

所以他建议我使用http://wordpress.org/plugins/display-widgets/。现在它有效。

此外,如果想要从头开始,您应该使用该代码

<?php // only show on 31 post not any other. ?>
<?php if (  is_single('31') ) { ?>


        <?php // if blog_widget_area2 is active then show otherwise don't :) ?>
        <?php if ( is_active_sidebar( 'blog_widget_area2' ) ) : ?>
            <div class="template_2_widget_area bordered">
                <?php dynamic_sidebar("blog_widget_area2"); ?>
            </div>
        <?php endif; ?>


<?php }else{  // otherwise load this sidebar ?>


    <div class="template_2_widget_area bordered">
        <?php dynamic_sidebar("blog_widget_area"); ?>
    </div>



<?php } ?>