WP_Query에서 URL의 맞춤 데이터에 대한 적절한 흐름은 무엇입니까?


14

복잡한 패싯을 WP 쿼리에 통합하는 여러 단계 프로세스가 있습니다. 문제는 - 깊은 내가 더 퍼지 내가이 방법에 될 수 가정 일에 나는 오히려 발명되고 (자신에게 구멍을 파고)보다 가이드 라인을 사용할 수 있습니다.

내가 가지고있는 일반적인 단계 (의사 코드이지만 실제와 가깝습니다) :

  1. URL에서 값을 가져옵니다 (와 같은 간단한 것 person=1)
  2. 프로세스 값 및 사용자 지정 쿼리 지침 추가 ( $relationship_query[] = array('relationship' => 'person_to_cat', 'object' => 1 );)
  3. 최종 사용자 지정 쿼리 지침을 검색하고 적절한 SQL 지시문을 생성

지금까지 나는 많은 관계가 있고 (관계, 분류법, 날짜) 깨지기 쉬워지고 있습니다 (코드의 한 구석은 다른 코드 구석에서 발견하고 모든 것이 분리되는 곳에 가치를 두지 않습니다).

너무 큰 질문은 -URL을 통해 WP에 사용자 정의 데이터를 전달, 수신, 저장 및 처리하는 적절한 프로토콜은 무엇 입니까?

작은 부품 :

  • WP 내부와 충돌하지 않는 방법?
  • 중개 데이터를 어디에 어떻게 저장합니까?
    • queryquery_vars속성의 차이 ? 그것들은 코드에서 거의 동일하게 사용되는 것처럼 보이지만 다른 값을 보유하고 경향이 있습니다 query_vars.

답변:


6

찾고있는 WP 기능은 add_rewrite_tag 입니다. URL에 맞춤 GET 매개 변수를 추가하고에 자동으로 포함시키는 것을 목표로합니다 query_vars.

예를 들어, init hook에 다음을 추가 할 수 있습니다.

add_rewrite_tag('%person%','([^&]+)');

http://example.com?person=joe 와 같은 URL의 경우 전 세계 $wp_query

$wp_query->query_vars['person'] = 'joe'

URL을 더 예쁘게 만들기 위해 다시 쓰기 규칙추가 할 수도 있습니다 ( 예 : http://example.com/person/joe).

add_rewrite_rule('^person/([^/]*)/?','index.php?person=$matches[1]','top');

자세한 정보 및 예제 는 Rewrite API 를 참조하십시오.


2
내가 모든 관련 코드를 읽을 수있는 (마지막에) 약간의 시간을 발견 WP하고 WP_Query거기에 일어나는 많은 일들이있는 동안, 나는 그 생각 add_rewrite_tag()사용자 정의 쿼리 VAR의 WP 인식하고 그것을 잘 재생하는 가장 간결한 방법을 보인다.
Rarst

1
  1. 예약 된 query_vars를 확인하려면 wp-includes / class-wp.php를 확인하십시오.
  2. 중개 데이터가 무엇을 의미하는지 잘 모르겠습니다. 더 설명해 주시겠습니까?
  3. WP는 URL로 query_string을 기반으로 페이지를로드하여 쿼리로 변환 한 다음 사용중인 query_var을 판별하기 위해 WP_Query에 의해 처리됩니다.

예 : /? pagename = about로 페이지를로드하면 WP는 쿼리 문자열을 처리하고 사용중인 query_var이 page_id임을 찾습니다.

다른 예 : /? cat = 1, /? category_name = uncategorized 및 / category / uncategorized는 동일한 query_var 'cat'을 갖습니다.


0

나는 그것을 통해 $_GET및 / 또는를 통해 수행되었다고 가정하고 $_POST그에 따라 조작합니다.

또는 방대한 양의 데이터를 db에 저장 한 다음 ID를 URL로 구문 분석하십시오.

$data_id = $_GET['id'];

$data = $wpbd->get_results("SELECT * FROM wp_epic_table WHERE id=".$id);

쿼리는 분명히 그렇게 간단하지는 않습니다. 많은 조인과 조인 테이블이 포함될 수 있습니다. 그것이 내 페이지 중 하나에서 수행하는 작업으로 고유 ID를 구문 분석 한 다음 MySQL을 통해 데이터를 작성합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.