2013-02-03 2 views
1

Im 무슨 이유로, 사이드 바에 추가하려고하는 기본 루프가 .... 내부 페이지 (단일 및 페이지 .php)에는 반복되지만 index.php에는 반복되지 않는 문제가 있습니다.wordpress 기본 루프 문제

on index.php (홈페이지)에 문제가 없습니다.

예를 들어, 내가 정렬되지 않은 목록 라인 항목을 채우는 루프를 원했다, 그래서 나는 이런 식으로 대해 갔다 :

 <div id="sideBarMain"> 
     <h2>title4sidebar</h2> 
     <ul>  
      <?php 
      query_posts(array ('category_name' => 'left_sidebar', 'posts_per_page' => 4, 'orderby=menu_order')); 
      if (have_posts()) : while (have_posts()) : the_post(); ?> 
      <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
      <?php endwhile; endif; ?> 
     </ul> 

     </div><!-- sidebar ender --> 

몇 가지 일들이 일어나고 있습니다. 1. 가장 큰 문제는이 루프가 제 위치에있을 때 탐색과 모든 문제가 발생한다는 것입니다. 페이지를 클릭하면 페이지가 헤더의 목록 광고 항목 중 하나와 함께로드됩니다. 따라서 기본 탐색 페이지에서 'About us'를 클릭하면 페이지가 '광고 항목 제목'대신로드됩니다.

또한 클릭 한 모든 항목에서 발생합니다.

2 - (page/single.php 페이지)의 사이드 바에있는 "left_sidebar"카테고리의 첫 번째 4 개의 게시물을 게시합니다. 어떻게 표시해야하는지, CSS는 제자리에 있고 나머지는 모두 네 번째 광고 항목은 루프를 한 번 더 반복합니다.

3 - 내 사이트 콘텐츠 영역에는 왼쪽에 세로 막대 2 개, 가운데에 기본 콘텐츠 영역이 있습니다. 잘못 반복되는 부분 (루프가 반복 된 후)에서 FireBug를 사용하여 반복되는 라인 항목에서 H 태그 속성을 사용하는 것으로 가정하면 다른 태그 옆에 h 태그가 붙습니다. 따라서 처음 4 줄의 항목은 CSS, 링크 색상, 롤오버 등을 통해 스타일이 잘 전달되고 4 줄 항목은 스타일이 없으며 퍼멀 링크도 처음 4 줄과 같이 적용되지 않습니다.

3 - divs와 ul/lis 등의 PHP 루프에서 모든 HTML을 제거 했으므로 CSS는 적용되지 않습니다. 이렇게하면 텍스트가 루프에서 나오지만 같은 일이 발생합니다. 루프의 부분, 첫 번째 4 리가 표준 기본 파란색 링크 텍스트 등으로 올라오고 다음 버그 4는 htags가 첨부 된 큰 모든 것 이전과 동일하게 나타납니다 ....

모두 문제 해결 - 사이드 바에서 나오는 페이지의 루프가 하나뿐입니다. - 모든 부동 소수점을 올바르게 제거했습니다. - W3C에서 오류 등을 검사 할 때 아무 것도 없습니다. 녹색 불이 계속 켜져 있습니다. - PHP쪽에 오류가 없습니다. (모든 페이지를 검사하고 오류가 활성화되어 있음) 로컬 서버에서 확인하십시오.

메신저.

무슨 일이 일어날 수 있는지에 대한 아이디어가 있습니까?

참고 : 앞서 생각해 보면 sidebar.php 페이지에만 루프가 하나 있지만 기술적으로 가져온 기술은 2 개의 루프가 사이드 바 wp 루프이고 page.php/single.php 루프가 함유량.

wp 어쩌면 최신의 다른 것이 있습니까? 필자는 항상 이것을 마치고 지금 문제가 있습니다 ......

아이디어가 있습니까? 메신저.

고맙습니다.

+1

멀티 포스트 : http://wordpress.stackexchange.com/q/84336가 확인하시기 바랍니다 http://meta.stackexchange.com/q/64068 – brasofilo

답변

2

귀하의 문제는 두 가지입니다. 이 함수를 사용하는 것이 왜 끝나야하는지에 관해 많은 문서화 된 이유가 있지만, 나는 생각한다. this is the best explanation.

2) 쿼리를 재설정하지 않습니다. 1 분 만에 더.

숫자 1로 돌아가서 query_posts의 문제점은 글로벌 $ wp_query 객체에 영향을 미친다는 점입니다. 메인 루프를 수정하려는 의도가 있다면 괜찮을 것입니다.하지만 여기서하려는 것은 아닙니다. 당신이 사용해야하는 것은 WP Query입니다. 새 쿼리 개체를 만드는 구문은 query_posts와 동일하지만 더 이상 $ wp_query의 전역 인스턴스에 영향을 미치지 않는다는 이점이 있습니다.

쿼리를 재설정하면 WordPress 쿼리를 사용하는 다른 코드 섹션이 쿼리 개체의 영향을받지 않게됩니다.

은이에 코드 예제를 변경해보십시오 :

<?php 
$query = new WP_Query(array('category_name'=>'left_sidebar','posts_per_page'=>4,'orderby=menu_order')); 
if($query->have_posts()) : while($query->have_posts()) : $query->the_post(); 
?> 
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php 
endwhile;endif; 
wp_reset_postdata(); 
?> 
+1

+1 좋은 답변과 Wordpress Stackexchange 스레드에 대한 훌륭한 링크, 처음 본 적이 있습니다. 이것은 만화책에서 플로차트가 수행되지 않은 것 같은 좋은 대답입니다 :) – McNab

1

functions.php에 이러한 함수와 상호 작용하는 필터가있을 수 있습니다. 거기를보고 뭔가를 찾고 싶다면보십시오.

또한 루프 전후에 <?php wp_reset_query(); ?>을 사용해보아야하므로 다른 사람들과 상호 작용하지 않도록해야합니다.

1) 당신이 query_posts 사용을 중지 imperitive입니다 :