>  기사  >  백엔드 개발  >  WordPress의 루프 구조 및 쿼리 기사 사용 분석

WordPress의 루프 구조 및 쿼리 기사 사용 분석

PHPz
PHPz원래의
2016-05-16 20:02:451071검색

WordPress에서 기사를 가져오는 데 가장 중요한 것은 루프입니다. 실제로 루프는 해당 기사를 찾기 위해 데이터베이스를 쿼리한 다음 이를 전역 변수에 임시로 저장하고 필요할 때 하나씩 WordPress 루프로 출력하는 것입니다. 디자인은 매우 훌륭합니다. 루프를 완성하려면 2,000줄 이상의 코드가 필요합니다. 루프를 사용하면 간단한 while 루프와 몇 가지 함수만 표시되므로 초보자도 쉽게 이해할 수 있습니다.

위는 일반적인 메인 루프 구조입니다. 먼저 have_posts() 함수를 사용하여 기사가 있는지 확인하고, while 문을 사용하여 루프를 수행한 후 the_posts()를 호출합니다. 루프 본문의 함수 및 the_posts() 함수는 기사가 확인되었음을 WordPress 핵심 쿼리 클래스에 알리는 데 사용됩니다. the_posts()가 호출될 때마다 루프의 현재 기사가 변경됩니다.

WP_Query 클래스

루프에 사용된 메서드는 모두 WP_Query 클래스에서 가져온 것입니다. 다음은 WP_Query 클래스에 대한 유명한 과학입니다.
WP_Query 클래스의 기능에는 쿼리 조건 처리, 데이터베이스에서 기사 가져오기, 기사 구성 및 저장이 포함됩니다. , 기사 루핑 등의 기사 쿼리 조건을 기반으로 페이지 유형을 결정합니다.
속성

$query

들어오는 쿼리 조건.

$query_vars

$query에서 사용할 수 있는 쿼리 조건을 처리합니다.

$queried_object

쿼리 유형에 따라 부여되는 쿼리 속성입니다. 예를 들어 쿼리가 분류를 기반으로 하는 경우 분류 정보가 포함된 클래스가 반환되고, 태그 페이지인 경우 작성자 페이지 등이 포함된 클래스가 반환됩니다.

$queried_object_id

$queried_object의 ID를 반환합니다. 예를 들어, 카테고리는 카테고리 ID이고, 태그는 태그 ID입니다.

$posts

데이터베이스에서 쿼리된 기사 및 기사 정보는 배열 형식으로 이 변수에 저장됩니다. 각 기사는 WP_Post 클래스에서 인스턴스화된 개체입니다.

$post_count

현재 기사 수, 즉 $posts 변수에 저장된 기사 수입니다.

$found_posts

페이지 매김이 활성화되지 않은 경우 게시물 수를 계산합니다.

$max_num_pages

총 페이지 수, 현재 글이 몇 페이지로 나누어져 있는지 나타냅니다.

$current_post

현재 게시물의 인덱스 값입니다. 루프에서 $current_post는 루프 시작 시 -1이고 루프할 때마다 1씩 증가합니다. 이는 $posts 변수(배열)에서 현재 루프되는 기사의 인덱스 값을 나타냅니다.

$post

루프의 현재 기사는 WP_Post 클래스를 통해 인스턴스화된 기사와 기사 정보를 포함하는 개체입니다.

$is_single, $is_page, $is_archive, $is_preview, $is_date, $is_year, $is_month, $is_time, $is_author, $is_category, $is_tag, $is_tax, $is_search, $is_feed, $is_comment_feed , $is_trackback, $is_home, $is_404, $is_comments_popup, $is_admin, $is_attachment, $is_singular, $is_robots, $is_posts_page, $is_paged

쿼리 조건을 기반으로 현재 페이지가 무엇인지 파악한 후 일부 변수에 저장 여기서 자세한 내용은 "워드프레스 페이지 판단 기능"을 참고하세요.

메서드

init()

객체를 초기화하고 모든 속성을 null, -1, 0 또는 False로 설정하고 일부 속성을 삭제합니다.

parse_query( $query )

쿼리 문자열을 구문 분석하고 저장합니다.

parse_query_vars()

이전 WordPress 버전의parse_query()와 동일한 기능을 가지고 있습니다. 이제 직접parse_query()를 호출하면 됩니다.

get( $query_var )

이름을 기준으로 쿼리 조건을 가져옵니다.

set( $query_var, $value )

쿼리 조건을 설정합니다.

get_posts()

기존 쿼리 조건을 기반으로 기사를 가져오려면 데이터베이스로 이동하여 $posts 속성에 저장합니다. 동시에 $post_count 속성을 설정합니다. 이 함수의 반환 값은 게시물이 저장되는 $posts 속성입니다.

next_post()

(루프 제어)는 $current_post를 1만큼 증가시킵니다. 즉, 현재 기사를 한 기사씩 앞으로 진행시키고 고급 현재 기사를 $post 속성에 추가합니다. $post 속성을 반환합니다.

the_post()

(루프 제어) 다음 기사를 입력하고 next_post() 함수를 호출한 후 고급 현재 기사를 전역 변수로 가져옵니다.

have_posts()

(루프 제어)는 모든 기사가 반복되었거나 기사가 전혀 없는 경우 루프가 완료되었는지 여부를 결정합니다.

rewind_posts()

(루프 제어) 루프의 시작 부분으로 이동합니다. $current_post 속성 및 $post 속성을 재설정하는 것과 동일합니다.

query( $query )

init() 메소드, parse_query() 메소드 및 get_posts() 메소드 호출을 포함하여 기사를 쿼리하고 get_posts() 메소드의 반환 값을 반환하려면 다음을 사용하십시오. 기능 기사 쿼리의 전체 작업을 완료할 수 있습니다.

get_queried_object()

$queried_object 속성이 이미 존재하는 경우 $queried_object 속성을 직접 반환하므로 기본 $queried_object 속성을 호출해야 합니다. $queried_object 속성을 직접 사용하세요.

get_queried_object_id()

$queried_object_id 속성을 생성합니다. 이미 존재하는 경우 $queried_object_id 속성을 직접 반환합니다. get_queried_object() 메소드와 유사합니다.

WP_Query( $query = '' ), __constructor( $query = '' )

WP_Query 클래스의 생성자, 클래스를 인스턴스화할 때 자체적으로 호출됩니다. 쿼리 조건을 사용하면 자동으로 query() 메서드를 호출하여 기사를 쿼리하는 데 도움이 됩니다.

더 많은 관련 튜토리얼을 보려면 초보부터 마스터까지 PHP 프로그래밍에 대한 전체 비디오 튜토리얼 세트

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