>백엔드 개발 >PHP 튜토리얼 >WP_Query 마스터하기: 루프의 힘 활용하기

WP_Query 마스터하기: 루프의 힘 활용하기

PHPz
PHPz원래의
2023-09-01 10:49:091259검색

标题重写为:Mastering WP_Query: Harnessing the Power of the Loop

이 시리즈의 소개에서 설명했듯이 WP_Query 수업에는 네 가지 주요 요소가 있습니다.

  • 쿼리 매개변수, 본 시리즈에서 자세히 소개하는 매개변수를 활용하세요
  • 쿼리 자체
  • 루프하면 게시물 내용, 제목 또는 표시하고 싶은 모든 것이 출력됩니다
  • 끝: if 및 while 태그를 닫고 게시물 데이터를 재설정

이 튜토리얼에서는 루프를 만드는 두 가지 주요 방법과 여러 루프를 사용하는 방법을 포함하여 WP_Query로 루프를 사용하는 방법을 보여 드리겠습니다.

적절한 위치를 순환

루프가 없으면 페이지에 아무것도 표시되지 않습니다. WordPress가 정의한 매개변수를 사용하여 쿼리를 실행한 후, 얻은 데이터에서 무엇을 출력할지 알려주어야 합니다. 이것이 루프가 들어오는 곳입니다.

따라서 세 가지 레이블을 사용하는 쿼리 뒤에 루프가 옵니다.

  • if( $query->have_posts() ) 检查是否有任何帖子。它通过检查查询的 post_count 属性的值是否小于 current_post + 1 이를 달성하기 위한 가치.
  • while( $query->have_posts() ) 只要有要检索的帖子, 就会对每个帖子重复循环。正如你所看到的,这个 have_posts() 방법은 앞서 게시물이 있는지 확인하기 위해 전화했던 것과 동일합니다. 이 방법은 포스트 카운터를 증가시키지 않는다는 점을 명심하십시오. 루프에 게시물이 있는지 또는 루프의 끝에 있는지 알려줍니다. 또한 루프가 끝에 도달하면 자동으로 되감습니다.
  • $query->the_post() 이 특정 게시물을 방문하세요. 또한 다음 게시물 검색, 게시물 카운터 증가 등 몇 가지 다른 작업도 수행합니다. 또한 우리가 사용할 글로벌 게시 데이터도 설정합니다.

호출 have_posts() 方法。这是因为 have_posts()은 루프 내부에 있을 때 루프를 처음으로 되감아서는 안 되며 무한 루프에 빠지게 됩니다.

이제 WP_Query 클래스에 루프가 있는 곳은 다음과 같습니다.

으아악

루프를 실행한 후 남은 일은 wp_reset_postdata()를 사용하여 정리하는 것뿐입니다.

루프 구조

루프의 구조는 게시물에서 표시하려는 데이터에 따라 다릅니다. 다음은 게시물 제목, 추천 이미지, 발췌문을 출력하는 루프 예시입니다. 아카이브 페이지에서 이와 같은 루프를 사용할 수 있습니다.

으아악

이 루프는 위에서 설명한 주요 이미지, 제목 및 발췌 내용을 정확하게 보여줍니다.

추가 반복: 내용 확인

그러나 때로는 게시물 목록 앞에 제목을 추가하거나 포함 요소에 제목을 모두 포함하고 싶을 수도 있습니다. 루프 앞에 이것을 추가하면 쿼리가 실제로 데이터를 반환하는지 여부에 관계없이 출력됩니다. 즉, 아래에 아무것도 없는 헤더나 일부 불필요한 마크업이 있을 수 있음을 의미합니다.

이 문제는 if 태그 안에 포함 요소나 제목을 넣으면 쉽게 해결할 수 있습니다.

으아악

여기서 내 쿼리가 게시물을 검색했는지 확인했고, 그렇다면 포함 요소를 열고 제목을 추가했음을 확인할 수 있습니다.

쿼리 결과를 목록으로 출력하려는 ​​경우에도 유용합니다. 특정 카테고리의 모든 게시물 목록을 만들고 싶다고 가정해 보겠습니다. ul 요소는 특정 게시물과 관련이 없기 때문에 내 루프 안에 없지만 게시물이 있는 경우에만 출력하고 싶습니다. 그래서 저는 이것을 사용합니다:

으아악

이것은 쿼리가 게시물을 가져왔는지 확인하고, 그렇다면 ul 요소를 연 다음 루프를 실행합니다.

추가 루프 실행

WP_Query 运行多个循环,但您必须重置发布数据并启动 WP_Query 을 사용하여 여러 루프를 실행할 수 있지만 이를 수행하려면 게시 데이터를 재설정하고

의 두 번째 인스턴스를 시작해야 한다는 점에 유의하는 것이 중요합니다. 이는 각 루프가 서로 다른 매개변수를 기반으로 데이터를 출력하기 때문입니다.

이 예에서는 첫 번째 기사의 발췌 및 특집 이미지를 보여주고 각 후속 기사의 제목만 보여줍니다.

으아악

여기에서는 두 가지 주요 매개변수를 사용했습니다.
  • 'posts_per_page' => '1'
  • 는 첫 번째 쿼리와 함께 사용되며 최신 게시물만 출력합니다.
  • 'offset' = '1'
  • 는 두 번째 쿼리와 함께 사용되어 첫 번째 게시물을 건너뛰고 아래 목록에서 해당 게시물이 반복되지 않도록 합니다.

ul 元素,并将每个帖子标题包含在 li위 코드에서 볼 수 있듯이 쿼리마다 루프가 조금씩 다릅니다. 첫 번째는 추천 이미지, 제목 및 발췌문을 출력하고, 두 번째는 쿼리에 게시물이 있는지 확인하고, 그렇다면

요소를 열고 각 게시물 제목을 li 링크로 래핑합니다. 요소와 페이지에. 🎜

두 루프 다음에 wp_reset_postdata()를 사용한 것도 알 수 있을 것입니다. 이 작업을 수행하지 않은 경우 보조 루프 외부에서 템플릿 태그를 사용하면 루프 내부의 마지막 게시물에 대한 데이터가 제공됩니다. 이 함수를 호출하면 게시 데이터가 기본 쿼리로 재설정됩니다.

루프 내에서 게시물 정보에 액세스

현재 게시물에 대한 정보에 액세스하기 위해 루프 내에서 호출할 수 있는 많은 함수가 있습니다. 또한 이 튜토리얼에서 이들 중 일부가 사용되는 것을 확인했습니다. 이 섹션에서는 가끔 사용할 수 있는 몇 가지 일반적인 기능 목록을 제공합니다.

제목 받기

게시물 제목을 가져오는 데 세 가지 기능을 사용할 수 있습니다. 그들은 the_title()get_the_title()the_title_attribute()get_the_title() 函数只是检索帖子标题,而 the_title() 将根据传递的参数显示或检索标题以及可选标记。当您想在显示标题之前对其进行清理时,您应该使用 the_title_attribute() .

발췌문 또는 전체 콘텐츠 받기

현재 게시물의 발췌 내용을 표시하는 the_excerpt()라는 전용 기능이 있습니다. 제공된 발췌문에 여러 필터를 적용하여 청중에게 올바르게 표시될 수 있도록 합니다. 모든 기사에 저자가 제공한 발췌문이 있는 것은 아닙니다. 이 경우 전체 게시물 발췌 내용을 표시하기 전에 압축된 버전을 생성합니다.

기능 the_content()을 사용하여 게시물의 전체 내용을 표시할 수 있습니다.

게시물 카테고리, 태그 및 기타 메타데이터 가져오기

WordPress 게시물에는 일반적으로 귀하가 할당한 태그나 카테고리가 있습니다. the_tags()the_category() 函数在循环中显示这些标签和类别的列表。使用 the_author() 函数显示帖子的作者。帖子的 ID 也可以通过函数 the_ID()를 사용하여 액세스할 수 있습니다.

게시 또는 수정된 날짜 및 시간 가져오기

WordPress에는 유연성과 사용 편의성을 높이기 위해 루프에서 게시물 게시 날짜(the_date()) 和时间 (the_time())。您应该记住的两个重要点是 the_time() 也可以用于仅显示帖子的发布日期。此外,对于同一天发布的多个帖子, the_date() 的输出仅回显一次。这基本上意味着您几乎总是希望使用 the_time())를 표시하는 데 사용할 수 있는 전용 기능이 있습니다.

요약

루프가 없으면

실제로 많은 일을 하지 않습니다. 이 루프는 WordPress가 쿼리 매개변수를 기반으로 데이터베이스에서 가져오는 데이터를 표시하는 데 사용하는 코드입니다. WP_Query

제가 시연한 것처럼 루프에 몇 가지 변경 사항이 있습니다. 간단한 루프는 쿼리 매개변수에 지정한 순서(또는 기본적으로 날짜 내림차순)로 모든 게시물을 출력합니다. if( $query->have_posts() )while( $query->have_posts() )를 분리하면 루프 외부에 추가 마크업을 삽입할 수 있지만 쿼리가 데이터를 반환한 경우에만 가능합니다. 마지막으로

를 여러 번 사용하면 대체 매개변수를 지정하고 각 루프 다음에 if( $query->have_posts() )while( $query->have_posts() ) 分开,您可以在循环外部插入额外的标记,但前提是您的查询已返回数据。最后,通过指定替代参数并在每次循环后使用 wp_reset_postdata(),您可以多次使用 WP_Query를 사용하여 페이지에 여러 루프를 만들 수 있습니다.

이 게시물은 Nitish Kumar의 기여로 업데이트되었습니다. Nitish는 다양한 플랫폼에서 전자상거래 웹사이트를 제작한 경험이 있는 웹 개발자입니다. 그는 여가 시간을 개인 프로젝트를 통해 일상 생활을 편하게 하거나 저녁에 친구들과 산책을 하며 보냅니다.

위 내용은 WP_Query 마스터하기: 루프의 힘 활용하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.