2013-10-07 5 views
1

Wordpress에서 다시 작성 규칙을 만들어 검색 결과에 직접 연결되도록 만들려고합니다. 나는 '객체'라는 사용자 지정 게시 유형으로 일하고 있어요Wordpress 간단한 다시 쓰기 규칙이 작동하지 않습니다.

내 결과 페이지가이 URL에 있습니다 : http://www.domain.com/objects/

나는 새로운 객체의 목록을 가리 키도록 URL의이 종류를 만들려면 : http://www.domain.com/objects/new

재 작성된 쿼리가되어야합니다 http://www.domain.com/objects/?filter=new

그때 내 개체 (meta_query)을 조회 할 $ _GET [ '필터'] 값을 사용할 수 있습니다 ...

내 문제이 코드와이에 시도했습니다

: 내가 도달 할 때, 불행하게도

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteRule ^objects/new/ /objects/?filter=new [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

:

add_rewrite_tag('%filter%','([^&]+)'); 
add_rewrite_rule('objects/new/','objects/?filter=new','top'); 

htaccess로는 다음과 같이 다음 보인다 URL http://www.domain.com/objects/new 404 오류가 발생했습니다. (

디버그 바는 나에게 보여이 :

Request: 
    objects/new 

Query String: 
    attachment=new 

Matched Rewrite Rule: 
    [^/]+/([^/]+)/?$ 

Matched Rewrite Query: 
    attachment=new 

워드 프레스는 첨부 파일을 검색하려고 왜 누군가가 말해 줄래? 재 작성 규칙에 문제가 있거나 뭔가 빠졌습니까?

미리 도움 주셔서 감사합니다.

+0

몇 가지 질문 1. 제대로 작동하는지 - http://www.domain.com/objects/ 2. http://www.domain.com/objects/filter/new - 괜찮은지 여부. –

+0

안녕하세요 Pramod, 나는이 질문들로 당신이 의미하는 것이 무엇인지 이해하지 못합니까? domain.com/objects는 기존 WP 페이지이며 domain.com/objects/filter/new는 최종 URL에 "필터"를 원하지 않기 때문에 나에게 좋은 해결책이 아닙니다. (domain.com/objects를 원합니다./new) – MavBzh

답변

5

OK, 을 스크린 샷을 첨부 나는 finnaly이를 달성 할 수있는 방법을 발견했습니다.여기

내가 내 테마에 추가 된 코드입니다 :

27

function custom_rewrite($wp_rewrite) { 
    $feed_rules = array(
     'objects/(.+)' => 'index.php?page_id=27&filtre=' . $wp_rewrite->preg_index(1), 
    ); 
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules; 
} 
내가 다시 URL에 도달 할 "/ 객체"페이지의 워드 프레스 ID이며, :

function custom_wp_querystring() { 
    add_rewrite_tag('%filtre%','([^&]+)'); 
} 

Wordpress에 "filtre"라는 사용자 지정 쿼리 var를 사용해야한다고 알리기 위해.

이 마지막 기능은 초기화 작업에 추가해야합니다

add_action('init', 'custom_wp_querystring'); 
add_filter('generate_rewrite_rules', 'custom_rewrite'); 

중요한 것은 알고, 내 페이지 템플릿 (내 예제에서 ID (27)와 하나)에서, 나는 쿼리 VAR을 테스트하려는 경우, 이 시험의 종류 할 수는 없습니다 :

if (isset ($_GET['filtre'])) { ... } 

GET의 바르 인해 워드 프레스 리디렉션에 '숨겨진'하는 당신은 수행해야합니다

if (isset($wp_query->query_vars['filtre'])) { ... } 
+0

플러그인이 코드를 direltly db에 추가하는 동안 코딩하여 규칙을 추가하고 있습니다. :) –

+0

감사합니다.'index.php? pagename = some-page -name'을 사용하면'index.php? page_id = 123'을 사용하면됩니다. – sglessard

0

다시 쓰기 규칙은

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^objects/new(.*)$ /objects/?filter=new [L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

+1

안녕하세요, 워드 프레스 정규 규칙 위의 규칙을 사용해도 Wordpress에서 '첨부 파일'을 쿼리하고 있습니다 – MavBzh

2

사용으로 배치 될 필요가 당신이 새로운 재 작성 규칙을 만들 수 url..you에 충돌 할 때 어떤 규칙을 노력을 analysize하는 데 도움이 될 것입니다이 플러그인 Rewrite plugin 적절하게 작동하는지 여부를 스스로 점검 할 수 있습니다.

wordpress 자체에 모든 다시 쓰기 규칙을 관리하는 wp_rewrite 클래스가 있으므로 아무 것도 쓸 필요가 없습니다.

몇 가지 다시 쓰기 규칙을 사용하여 규칙 우선 순위를 설정하십시오. 그 이유는 위의 목록에서 언급되거나 언급 된 규칙이 먼저 일치하는 경우 다음에 나열된 규칙을 무시하기 때문입니다.

나는이 플러그인과 저의 작품을 저에게 사용하고 싶습니다. 여기

enter image description here

+1

안녕하세요, 감사합니다. 이 플러그인은 멋지지만 추가 된 규칙을 삭제하는 방법을 찾지 못했습니다. (디버그 막대를 사용하여 분석 쿼리를 볼 수 있습니다. 불행히도 내 문제는 재 작성 규칙을 추가하는 방법을 알고 있습니다. 내가 원하는 것을 달성하기위한 규칙을 만드는 올바른 방법 : S – MavBzh

관련 문제