2014-08-29 1 views
2

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; ?> 

그러나, 나는

답변

1

가능한 해결책 .... 특정 게시물에 표시 할 두 번째 위젯을 가져올 수 없습니다 on 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; ?> 

솔루션이

// 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; ?> 

다른 가능한 솔루션 :

시도 : 좁힐 가능성이 문제를 해결하기 위해 일시적으로 모든 플러그인을 -deactivating

. 문제가 사라지면 개별적으로 활성화하여 범인을 찾으십시오.

- wp-content/themes에서 현재 테마의 폴더 이름을 바꾸면 잠시 동안 기본 테마 (Twenty Ten)로 전환합니다. 아이디어는 테마 특정 문제를 배제하기 위해 WordPress가 기본 테마로 폴백하도록 강제하는 것입니다. 자세한 내용은

는 "사이드 바"에 관한 공식 문서를 읽을 참고 : is_single() (의 IsEnabled 퍼머시) 후 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 } ?> 
+0

를 사용해야합니다. 두 위젯에 다른 것들이로드되었는지 확인했습니다. 그러나 문제가 무엇인지 알 수있을 것 같습니다. 아마 두 번째 위젯 코드보다

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 } ?>