我在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; ?>
但是,我无法在该特定帖子中显示第二个小部件....
答案 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 } ?>