WordPress.org

언어:English•Français•Italiano•루프 日本語Português do Brasil•Русский•中文(简体)•中文(繁體)•(Add your language)

루프 PHP 코드에 의해 사용되는 워드 프레스를 표시하는 게시물이 있습니다. 루프를 사용하여,워드 프레스는 현재 페이지에 표시 할 각 게시물을 처리하고 루프 태그 내에서 지정된 기준을 일치하는 방법에 따라 포맷합니다. 각 게시물에서 처리됩니다.

워드프레스 설명서에서 특정 템플릿 태그나 플러그인과 같이”이 태그는 루프 내에 있어야 합니다”라고 표시되면 각 게시물에 대해 태그가 반복됩니다. 예를 들어,루프는 각 게시물에 대해 기본적으로 다음과 같은 정보를 표시합니다:

  • 이 경우,당신은 당신이 원하는 것을 찾을 수 있습니다.

적절한 템플릿 태그를 사용하거나(고급 사용자의 경우)루프가 실행되는 동안 현재 게시물의 정보로 설정된$게시물 변수에 액세스하여 각 게시물에 대한 다른 정보를 표시할 수 있습니다.

루프에서 초보자의 모습에 대 한 동작에서 루프를 참조 하십시오.

루프를 사용하여

루프는 테마의 색인에 배치해야합니다.포스트 정보를 표시하는 데 사용되는 다른 템플릿에.

테마 템플릿의 맨 위에 헤더 템플릿에 대한 호출을 포함해야 합니다. 당신이 당신의 자신의 디자인 안에 루프를 사용하는 경우(그리고 당신의 자신의 디자인은 템플릿이 아닙니다):

<?php define( 'WP_USE_THEMES', false ); get_header(); ?>

루프는 여기에서 시작됩니다:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

그리고 여기서 끝납니다:

<?php endwhile; else : ?><p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p><?php endif; ?>

이것은 제어 구조에 대한 대체 구문을 사용하고 있으며 다음과 같이 표현 될 수도 있습니다:

<?php if ( have_posts() ) {while ( have_posts() ) {the_post(); //// Post Content here//} // end while} // end if?>

루프 예제

일부 카테고리의 게시물 스타일 다르게

이 예제에서는 각 게시물의 제목(게시물의 영구 링크에 대한 링크로 사용됨),카테고리 및 콘텐츠가 표시됩니다. 또한 카테고리 아이디’3’이있는 카테고리의 게시물을 다르게 스타일링 할 수 있습니다. 이 작업을 수행하기 위해 템플릿 태그가 사용됩니다. 코드의 각 부분이 수행하는 작업을 보려면 주석을 주의 깊게 읽으십시오.이 경우,이 코드를 사용할 수 없습니다.빌?>태그. 그리고, 코드(중괄호처럼 간단한 것조차도:})는<안에 있어야합니까?빌?>태그. 위의 예와 같이 명령문 내에서 코드를 분산시키기 위해 시작 및 중지할 수 있습니다.

일부 카테고리에서 게시물 제외

이 예제에서는 특정 카테고리 또는 카테고리가 표시되지 않도록 숨기는 방법을 보여 줍니다. 이 경우 카테고리 3 과 8 의 게시물은 제외됩니다. 이 예제는 쿼리 자체를 변경한다는 점에서 위의 예제와 다릅니다.

참고:메인 페이지에이 예제를 사용하는 경우,당신은 당신의 카테고리 아카이브에 대해 다른 템플릿을 사용해야합니다;그렇지 않으면,워드 프레스는 카테고리 아카이브를 볼 경우에도,카테고리 3 과 카테고리 8 의 모든 게시물을 제외합니다! 카테고리 3 과 카테고리 8 의 게시물은 메인 페이지에서만 제외됩니다:

...<?php if ( is_home() ) {$query = new WP_Query( 'cat=-3,-8' );if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); } else {...?>...

요청된 페이지와 관련하여 특정 조건이 참인지 여부에 따라 출력을 제어하는 데 사용할 수 있는 다른 조건부 태그가 있습니다.

객체 지향

루프는 객체 지향과 전역 동작의 조합입니다. 이것은 처음에는 혼란 스럽습니다.

루프의 두 가지 중요한 전역 변수는 다음과 같습니다:

  • $데이터베이스 쿼리 결과 중 하나인 개별 쿼리 게시물의 배열입니다.모든 템플릿 태그는 기본적으로$포스트 전역 변수에 의존하며$포스트 전역 변수는_포스트()에 의해 설정/수정됩니다. 2015 년 11 월 15 일에 확인함.

    다중 루프

    이 섹션에서는 루프의 고급 사용을 다룹니다. 그것은 약간의 기술,하지만 당신을 놀라게 할 수 없습니다. 우리는 쉬운 예제와 함께 시작하고 거기에서 작동합니다. 약간의 상식,인내심 및 열정으로 여러 루프를 수행 할 수 있습니다.

    먼저,왜 여러 루프를 사용하고 싶습니까? 일반적으로 대답은 한 그룹의 게시물로 무언가를 수행하고 다른 그룹의 게시물과 다른 작업을 수행하지만 두 그룹을 같은 페이지에 표시 할 수 있다는 것입니다. “무언가”는 거의 모든 것을 의미 할 수 있습니다; 당신은 단지 당신의 기술과 상상력에 의해 제한됩니다.

    우리는 아래의 예제로 얻을 것이다,하지만 먼저 기본 사항에 대해 읽어야합니다. 기본 루프를 살펴보십시오. 그것은 구성:

    <?php if ( have_posts() ) : ?><?php while ( have_posts() ) : the_post(); ?> <!-- do stuff ... --><?php endwhile; ?><?php endif; ?>

    조금 옆으로 할 물건에:이 예제에서는 단순히 포맷하고 페이지에 각 게시물을 표시하는 방법을 결정하는 코드의 무리에 대한 자리 표시 자입니다. 이 코드는 당신이 당신의 워드 프레스가보고하는 방법에 따라 변경할 수 있습니다. 당신은 큐브릭 테마의 인덱스를 보면.마 물건 섹션은 아래의 모든 것이 될 것입니다:

    <?php while ( have_posts() ) : the_post(); ?>

    위에:

    <?php comments_popup_link( 'No Comments "', '1 Comment "', '% Comments "' ); ?>

    에 대한 설명이코더가 있다:have_posts()및 the_post()는 시설 주위에 래퍼 글로벌$플라스크 개체는 모두 작업입니다. 블로그 헤더에서 호출되고 공급된 쿼리 인수가 가져오기 및 경로 정보를 통해 들어옵니다. 그 결과,게시물의 배열이 생성된다. 이 배열은 객체에 저장되고 블로그 헤더로 다시 반환되어 전역$게시물 배열에 채워집니다(이전 게시물 루프와의 이전 버전과의 호환성을 위해).

    워드 프레스는 블로그 헤더를로드 완료하고 템플릿에 내림차순되면,우리는 우리의 포스트 루프에 도착. 이는 루프 카운터를 확인하여 게시물 배열에 남아있는 게시물이 있는지 확인합니다. 이 루프 카운터를 진행하고 글로벌$포스트 변수뿐만 아니라 모든 글로벌 포스트 데이터를 설정합니다. 우리는 루프를 소진 한 후,있다_게시물()거짓 반환하고 우리는 완료.

    루프 예제

    다음은 다중 루프를 사용하는 세 가지 예입니다. 여러 루프를 사용하는 열쇠는$를 한 번만 호출 할 수 있다는 것입니다. 이 문제를 해결하려면 다시 감기_게시물()을 호출하거나 새 쿼리 개체를 만들어 쿼리를 다시 사용할 수 있습니다. 이 내용은 예제 1 에서 다룹니다. 예제 2 에서는 변수를 사용하여 쿼리 결과를 저장하는 방법에 대해 설명합니다. 마지막으로,’행동에 여러 루프’블로그의 홈페이지에 특정 범주의 게시물을 촉진하기 위해 여러 루프를 사용하는 한 가지 방법을 문서화하기 위해 함께 아이디어의 무리를 제공합니다.

    다중 루프 예제 1

    동일한 쿼리를 두 번 반복하려면 되감기 _포스트()를 호출합니다. 이렇게하면 루프 카운터가 재설정되고 다른 루프를 수행 할 수 있습니다.

    <?php rewind_posts(); ?> <?php while ( have_posts() ) : the_post(); ?><!-- Do stuff... --><?php endwhile; ?>

    원래 쿼리의 게시물이 끝났고 다른 쿼리를 사용하려는 경우 쿼리 게시물()을 호출한 다음 다시 반복하여 다시 사용할 수 있습니다. 새 쿼리를 수행하고,새 게시물 배열을 만들고,루프 카운터를 재설정합니다.

    원래 쿼리를 유지해야 하는 경우 새 쿼리 개체를 만들 수 있습니다.

    다중 루프 예제 2

    다중 루프를 사용하는 또 다른 버전은 포스트와 포스트를 사용할 수 없다는 점을 해결하기 위해 또 다른 압정을 취합니다. 이 문제를 해결하려면 원래 쿼리를 변수에 저장 한 다음 다른 루프와 함께 다시 할당해야합니다. 이 방법으로 모든 전역에 의존하는 모든 표준 함수를 사용할 수 있습니다.

    예:

    참고:

    개체 대신”=”의”복제”연산자로 참조 됩니다. 예제 2 를 실행하려면 다음 코드를 사용해야 합니다:

    그러나,이 두 번째 예는 워드 프레스 2.1 에서 작동하지 않습니다.

    다중 루프 동작

    다중 루프를 사용하는 방법을 이해하는 가장 좋은 방법은 실제로 사용 예를 보여주는 것입니다. 아마도 여러 루프의 가장 일반적인 사용은 한 페이지에 두 개(또는 그 이상)의 게시물 목록을 표시하는 것입니다. 이것은 웹마스터가 쓴 뿐만 아니라 아주 최신 포스트를 특색짓고 싶을 때 수시로 행해지고,또한 어느 종류에서 배치한다.

    모든 서식 및 문서 관리 문제를 제쳐두고 두 개의 게시물 목록을 갖고 싶다고 가정 해 봅시다. 가장 최근의 게시물(가장 최근에 추가 된 표준 10 개의 게시물)을 나열하는 게시물과’추천’카테고리의 한 게시물 만 포함하는 다른 게시물. ‘추천’카테고리의 게시물이 먼저 표시되어야하며 그 다음에 두 번째 게시물 목록(표준)이 표시되어야합니다. 캐치는 어떤 게시물이 두 범주에 나타나지 않아야한다는 것입니다.

    단계 1. ‘추천’카테고리에서 하나의 게시물 만 가져옵니다.

    영어로 위의 코드를 읽을 것:

    설정$내_쿼리는 카테고리가 추천 이름이 지정된 모든 게시물을 쿼리하고 그런데,나에게 하나의 게시물을 얻을 결과와 동일. 반환된 단일 게시물의 식별 번호와 동일한 변수를 설정합니다. 물건 행 검색된 게시물에 대 한 관련 된 모든 서식 옵션을 나타냅니다 리콜.

    다음 단계에서는 동일한 게시물이 두 목록에 모두 표시되지 않도록$의 값이 필요합니다.

    단계 2. 두 번째 루프는 엑스 최신 게시물(하나 제외)을 가져옵니다.

    다음 코드는(워드 프레스 환경 설정에 정의 된대로)엑스 최근 게시물을 가져옵니다 이미 첫 번째 루프에서 표시된 하나를 저장하고 물건을 할 따라 표시합니다.

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue;?><!-- Do stuff... --><?php endwhile; endif; ?>

    영어로 위의 코드를 읽을 것입니다.

    모든 게시물,는 게시물을 같$do_not_duplicate 그냥 아무것도(계속),그렇지 않으면 표시 다른 모든 게시물에 따르면 할 물건입니다. 또한 태그 지정 및 키워드 플러그인이 멋지게 작동하도록 캐시를 업데이트하십시오. 이미 표시된 게시물의 아이디가 포함되어 있습니다.

    최종 결과

    여기에 코드의 마지막 부분은 어떤 형식없이 보이는 것입니다:

    최종 결과는 두 개의 목록이있는 페이지가 될 것입니다. 첫 번째 목록에는’기능’카테고리의 가장 최근 게시물 인 하나의 게시물 만 포함됩니다. 두 번째 목록에는 첫 번째 목록에 이미 표시된 게시물을 제외하고 최근 게시물(워드 프레스 환경 설정에 정의 된대로)이 포함됩니다. 기능 게시물이 새 것으로 교체되면 그래서,이전 기능은(당신이 표시하고 포스트 주파수에 선택 얼마나 많은 게시물에 따라)아래의 표준 포스트 목록 섹션에 표시됩니다. 이 기술(또는 유사한)은 템플릿 계층 구조에 대한 지식과 함께 많은 사람들이 집에 대한 다른 모습을 만드는 데 사용되었습니다.그리고 그 이유는 무엇입니까? 이 페이지 하단의 관련 리소스를 참조하십시오.

    참고 첫 번째 범주의 여러 게시물에 대한

    게시물_페이지 당=2 이상의 경우 코드를 약간 변경해야합니다. 단일 값이 아닌 배열로 변경해야 합니다. 그렇지 않으면 첫 번째 루프가 완료되고 변수는 최신 게시물의 아이디와 같습니다. 이 두 번째 루프에 중복 게시물이 발생합니다. 문제를 해결하려면

    로 바꿉니다.이 변경 사항은 배열에 중복되지 않습니다. 그런 다음

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue; ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; ?>

    로 바꿉니다.그리고 기준과 일치하는 항목만 반환됩니다:

    <?php query_posts( array( 'post__not_in' => $do_not_duplicate ) );if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

    문자열 대신 쿼리 매개 변수가___안 함 옵션을 설정하는 연관 배열이었습니다.

    중첩 루프

    중첩 루프는 첫 번째 루프를 마치기 전에 두 번째 루프를 실행하고 있음을 의미합니다. 이 예를 들어 단축 코드와 포스트 목록을 표시하는 것이 유용 할 수 있습니다.

    $my_query = new WP_Query( 'cat=3' );if ( $my_query->have_posts() ) { while ( $my_query->have_posts() ) { $my_query->the_post();the_content();}}wp_reset_postdata();

    일부 전역 변수가 올바른 값을 다시 보유하도록 중첩 루프 다음에 주 루프 데이터를 재설정해야합니다.

    출처

    여러 루프의 섹션은 해커 메일 링리스트의 루프에 대한 라이언 보렌과 알렉스 킹의 토론의 조합입니다. 중첩 루프 예제는 메일 링리스트에 대한 또 다른 토론과 니콜라스 커 틀러에 의해 게시물에 의해 영감을했다.

    리소스

    • 루프에 들어가기-(슬라이드)플러그인과 테마가 루프를 수정할 수있는 방법에 대한 소개
    • 워드 프레스 사용자 정의 루프
    • 워드 프레스 워드 프레스 루프 생성기

    관련

    워드 프레스 루프,루프 내에서만 작동하는 다양한 템플릿 태그에 대한 자세한 내용은,여기에 더 많은 리소스입니다:

    루프에 대한 자세한

    • 기사:행동의 루프
    • 기사:템플릿 태그
    • 기사: 템플릿 파일에서 루프를 사용하여

    기사

    • 기사:루프-워드 프레스 루프 내에서 쿼리의 사용의 기본 개요.
    • 기사:쿼리 개요-워드 프레스를 생성하는 쿼리를 결정하는 방법에 대한 설명.
    • 기사:후크를 통한 쿼리 사용자 정의
    • 기사:분류 체계에 대한 고급 쿼리 작성
    • 기사:오프셋 및 페이지 매김을 사용하여 사용자 정의 쿼리 작성

    코드 문서

    • 클래스: 사용자 관련 쿼리에 대한 사용자 쿼리 클래스(4681>
    • )는 사용자 관련 쿼리에 대한 사용자 쿼리 클래스(4681>
    • )입니다.4681>
    • 함수:쿼리 게시물()-추가 사용자 정의 쿼리 만들기
    • 함수:게시물()-항목의 아이디를 가지고 그 기사에 대한 데이터베이스의 레코드를 반환
    • 함수: 4681>
    • 함수:_포스트()-쿼리
    • 문서를 반환 여부를 결정 하는 조건 함수:_포스트()-쿼리
    • 함수:_포스트()-쿼리
    • 후 루프를 자동으로 설정 하는 데 사용 합니다.-루프
    • 함수 내에서 단일 쿼리 결과에 대한 데이터를 설정합니다: -변경되는 쿼리는 주 쿼리인지 확인
    • 액션 후크:이전 게시물-변경 워드 프레스 쿼리가 실행되기 전에
이 문서는 편집이 필요한 것으로 표시됩니다. 당신은 그것을 편집하여 코덱스를 도울 수 있습니다.

You might also like

답글 남기기

이메일 주소는 공개되지 않습니다.