사용자 지정 URL 경로를 만드는 방법은 무엇입니까?
2 대답
- 투표
-
- 2011-08-19
테마의functions.php에 추가하거나 플러그인에 넣으세요 .
add_action ( 'init','wpse26388_rewrites_init'); function wpse26388_rewrites_init () { add_rewrite_rule ( '속성/([0-9] +)/? $', 'index.php?pagename=properties & amp;property_id=$matches [1]', 'top'); } add_filter ( 'query_vars','wpse26388_query_vars'); function wpse26388_query_vars ($ query_vars) { $ query_vars []='property_id'; return $ query_vars; }
이는 쿼리 var
property_id
properties 다음에 오는 숫자 조합을 사용하여/properties/
로 요청을 보내는 재 작성 규칙을 추가합니다. > 설정합니다. 퍼머 링크 설정 페이지를 방문하고 저장하여 다시 쓰기 규칙을 플러시하면이 새 규칙이 포함됩니다.page-properties.php
템플릿에서get_query_var ( 'property_id')
는 설정된 경우 속성 ID를 반환하고 그렇지 않은 경우 기본 속성을 표시합니다. 페이지.Add this to your theme's functions.php, or put it in a plugin.
add_action( 'init', 'wpse26388_rewrites_init' ); function wpse26388_rewrites_init(){ add_rewrite_rule( 'properties/([0-9]+)/?$', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); } add_filter( 'query_vars', 'wpse26388_query_vars' ); function wpse26388_query_vars( $query_vars ){ $query_vars[] = 'property_id'; return $query_vars; }
This adds a rewrite rule which directs requests to
/properties/
with any combination of numbers following to pagenameproperties
, with the query varproperty_id
set. Just be sure to visit your permalinks settings page and save to flush rewrite rules, so this new rule will be included.In your
page-properties.php
template,get_query_var('property_id')
will return the property id if it was set, if it's not then show the default properties page.-
이것은 나를 위해 일하는 것에 가깝지만 추가해야했습니다. add_filter ( 'init','flushRules'); functionflushRules () { 글로벌 $ wp_rewrite; $ wp_rewrite->flush_rules (); }This was CLOSE to working for me but I needed to add: add_filter('init','flushRules'); function flushRules(){ global $wp_rewrite; $wp_rewrite->flush_rules(); }
- 5
- 2012-11-13
- tooshel
-
@tooshel 당신은 분명히 모든 요청에 대해 규칙을 플러시하고 싶지 않습니다. 이것은 비용이 많이 드는 작업이며 사이트를 크롤링하는 속도를 늦 춥니 다.플러그인 활성화시 또는 영구 링크 설정 페이지를 방문하여 규칙을 한 번만 플러시하면됩니다.@tooshel you definitely don't want to flush rules on every request, it is an expensive operation and will slow your site to a crawl. you only need to flush rules once, on plugin activation, or just by visiting the permalinks settings page.
- 23
- 2012-11-13
- Milo
-
네,알겠습니다...하지만 테스트 할 때 거기에있는 것이 좋습니다!Yeah, I get that . . . but when you are testing it's nice that it's in there!
- 1
- 2012-11-14
- tooshel
-
더 똑똑한 재 작성 URL 정규 표현식은```^properties/([0-9] +)/?```일 수 있습니다.그렇지 않으면```example/properties/1''`과 일치합니다.A smarter rewrite url regexp might be ```^properties/([0-9]+)/?```. Otherwise it would match something like ```example/properties/1```
- 3
- 2014-12-12
- Ryan Taylor
-
@RyanTaylor 당신은 그것에 대해 확신합니까?테스트 할 때`example/properties/1`을 캡처하지 않습니다.@RyanTaylor are you sure about that? it doesn't capture `example/properties/1` when I test it.
- 0
- 2014-12-12
- Milo
-
page-properties.php 파일의 위치는 무엇입니까?플러그인 디렉토리에 넣었습니다.맞습니까?What is location of page-properties.php file? I put it inside plugin directory. Is that right?
- 0
- 2016-06-30
- Farid Movsumov
-
@FeridMovsumov 테마 파일은 [필터 추가] (https://developer.wordpress.org/themes/basics/template-hierarchy/#filter-hierarchy)를 사용하여 다른 곳에서로드하지 않는 한 항상 현재 활성 테마 디렉토리에서로드됩니다..@FeridMovsumov theme files are always loaded from the current active theme directory, unless you [add a filter](https://developer.wordpress.org/themes/basics/template-hierarchy/#filter-hierarchy) to load them from elsewhere.
- 0
- 2016-06-30
- Milo
-
안녕하세요 @Milo,이것은 아름다운 코드입니다.$paged=(get_query_var ( 'paged')) 사용할 때 충돌하지 않게 만드는 방법을 알고 있습니까?get_query_var ( 'paged') : 1;?이 함수는 $page를 캡처하고 (비워두고) 페이지 매김을 계속할 수 없습니다.Hello @Milo, this is a beautiful piece of code. Do you know how to make this not clash when using $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ? The function is capturing $page (and leaving it blank) and I'm not able to continue paginating.
- 0
- 2017-08-08
- Jaypee
-
- 2017-05-21
다른 방법 :
add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0);
Another way to do it:
add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0);
-
허용되는 답변은 4.7 (및 4.8)에서 작동하지만 그렇지 않은 이유는 확실하지 않습니다.코드는 기본적으로 동일한 작업을 수행합니다.`add_rewrite_tag`는`query_vars` 필터와 동일한 배열에 쿼리 var를 추가합니다.The accepted answer works with 4.7 (and 4.8), not sure why you think it doesn't. Your code is essentially doing the same thing, `add_rewrite_tag` adds the query var to the same array as the `query_vars` filter.
- 2
- 2017-07-07
- Milo
-
@Milo 아마도 저에게 효과가 없었을 것입니다.하지만 4.7이 없어서 확인할 수 없습니다.내 대답을 편집하겠습니다.@Milo it probably didn’t work for me, but I don’t have a 4.7 handy anymore so I can’t check. I will edit my answer.
- 0
- 2017-07-08
- Christian Lescuyer
-
@Milo 개인적으로 태그를 다시 작성하는 것을 선호하지만 여전히 허용되는 답변을 테스트했으며 작동합니다.그래도 개인적인 취향이 있습니다.@Milo Although I personally prefer rewrite tag, but still tested the accepted answer and it works. Just some personal tastes, though.
- 0
- 2017-07-08
- Jack Johansson
-
@JackJohansson 재 작성 태그는 [permastruct에서] (https://codex.wordpress.org/Function_Reference/add_permastruct) 사용할 때 필요합니다.이 경우 WordPress에서 사용하지 않는 추가 데이터입니다.@JackJohansson rewrite tags are necessary when you're using it [in a permastruct](https://codex.wordpress.org/Function_Reference/add_permastruct). It's just an extra bit of data that WordPress never uses in this case.
- 1
- 2017-07-08
- Milo
-
두 규칙을 동일한 방법에 추가 할 수 있으며,유지 관리 작업을 수행하고 있는지 확인하기 위해 더 깨끗하고 유용한 기능으로 끝날 수 있습니다.both rules can be added to the same method, ending up in a cleaner and more useful function to come back to and figure out if doing maintenance work
- 0
- 2018-07-14
- eballeste
저에게는 매우 특이한 요구 사항이 있습니다. 너무 혼동하지 않고 설명 할 수 있기를 바랍니다.외부 XML 파일에서 가져온 일부 속성을 나열하는 페이지 템플릿을 만들었습니다. 지금까지 URL이 다음과 같다고 가정 해 보겠습니다.
각 속성에는 사용자를 자세한 정보를 표시하는 '단일 속성'페이지로 리디렉션해야하는 링크가 있습니다.다음과 같은 링크를 만드는 방법이 있는지 궁금합니다.
여기서
123
은 속성의 ID입니다.따라서properties/some_id
와 같은 URL이있는 경우보기 파일 (예 :single.php
또는page.php
파일)이지만이 URL 조건에 한정됩니다.가능합니까?