WordPress 팁 및 플러그인의 URL 재 작성
WordPress에 대한 최신 업데이트를 통해 개발자는 개인 웹 사이트를 매우 신속하게 사용자 지정할 수있었습니다. 테마 영역을 업데이트하고, 사이드 바에서 위젯을 바꾸고, 사용자 정의 PHP 코드 함수를 작성하는 것도 간단합니다. 창공은 거대합니다. 인기있는 영역 중 하나는 예쁜 URL 퍼머 링크를 다시 작성하는 것입니다..
기본 WordPress 다시 쓰기 시스템을 업데이트하는 데 사용할 수있는 몇 가지 방법이 있습니다. 이 튜토리얼에서는 몇 가지 예제를 공유하고 프로세스가 얼마나 간단한지를 보여줍니다. 코드에서 어떤 일이 일어나는지 PHP에 대한 이해가 필요하지만 직접 복사하여 자신의 템플릿에 붙여 넣기가 쉽습니다. 실제로 관련된 작업은 거의 없습니다..
WP_Rewrite 이해
Apache 서버의 mod_rewrite에 익숙하다면 WordPress 재 작성 구문을 사용합니다. 그들의 시스템은 여전히 .htaccess 파일이지만 모든 규칙은 PHP로 코딩되어 있습니다. 실제로 우리는 우리 자신의 URL을 작성하는 것을보다 잘 제어 할 수 있기 때문에 프로세스가 조금 더 쉬워집니다..
주제에 대한 정보가 풍부하기 때문에 $ wp_rewrite 클래스 페이지를 감추는 것이 좋습니다. 모든 것을 쉽게 이해할 수 있도록 참조 할 수있는 작은 예제가 있습니다. 대부분의 코드는 테마에 직접 쓸 수 있습니다. functions.php 파일. WordPress에 이미 포함되어있는 기본 다시 쓰기를 살펴 보겠습니다..
$ wp_rewrite-> rules의 내용
선언함으로써 $ wp_rewrite
클래스를 전역으로 설정하면 모든 내부 데이터에 액세스 할 수 있습니다. 자신 만의 규칙을 추가하려고하면 이름이 붙은 배열에 추가됩니다 $ wp_rewrite-> rules
. 개발 중에 여러 번 데이터를 참조해야 할 가능성이 높으므로이 변수를 기억하는 것이 중요합니다..
규칙); ?>
이 코드 블록을 테마에 추가했습니다. page.php 파일. 그것은 큰 혼란처럼 보이는 많은 양의 데이터를 출력 할 것입니다. 하지만 네가 소스보기 귀하의 페이지에서 어떤 파일 이름과 일치하는 재 작성 규칙을 실제로 쉽게 볼 수 있습니다. 예를 들어 카테고리 재 작성을위한 규칙을 살펴 보겠습니다.
[category /(.+?)/?$] => index.php? category_name = $는 [1]와 (과) 일치합니다.
괄호 안의 왼쪽에있는 비트는 찾아야 할 Apache RewriteRule입니다. 섹션부터 시작 /범주/ 그 뒤에 임의의 문자열이옵니다. 이것이 일치하면 서버는 참조를 알고 있습니다. index.php? category_name =
끝에서 변수를 바꾸는 동안.
맞춤 영구 링크 설정
$ wp_rewrite 클래스에서만 너무 많은 내용을 처리 할 수 있습니다. 다음과 같이 많은 다른 속성을 참조 할 수 있습니다. $ wp_rewrite-> category_base
또는 $ wp_rewrite-> author_base
이 페이지의 기본 URL 구조를 가져 오는 데 사용됩니다. 그러나 WP의 기본 설정을 가져 오는 것 외에 자체 규칙을 만들 수도 있습니다.
제작자베이스 재 구축
퍼머 링크 설정 페이지에 들어가면 카테고리 및 태그 기반을 재설정 할 수 있습니다. 그러나 저자 기반을 재설정하는 옵션이 이상하게도 누락되었습니다..
하지만 우리는 add_rewrite_rule ()
WordPress '코덱스에서 새로운 설정을 통합했습니다. 이 경우에는 /저자/ 와 /작가/ 그러나 당신은 당신이 좋아하는 기지를 사용할 수 있습니다. 또한 저자 페이지와 RSS 피드에 대한 다른 리디렉션 중 일부를 복사했습니다. 이 코드 블록을 테마의 functions.php 파일에 추가 할 수 있습니다..
add_action ( 'init', 'add_author_rules'); function add_author_rules () add_rewrite_rule ( "작가 / ([^ /] +) /?", "index.php? author_name = $ matches [1]", "top"); add_rewrite_rule ( "작가 / ([^ /] +) / 페이지 /? ([0-9] 1) /?", "index.php? author_name = $ matches [1] ","top "); index.php? author_name = $ matches [1] & feed = $ matches [2] ","index.php? author_name = $ matches [1] & feed = $ matches [2] ", 상단"); add_rewrite_rule ( "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2]" , "top");
이 함수는 $ wp_rewrite 변수를 사용하지 않아도 액세스 할 수 있습니다. 일부 개발자는 클래스 속성을 사용하여 하드 코딩하는 것보다 간단하기 때문에이 방법을 좋아합니다. 그러나 나는 또한이 방법이 항상 일부 워드 프레스 설치에 대한 신뢰할 수없는 것으로 나타났습니다. 실제로 .htaccess를 플러시 한 후 훅에이 룰을 추가하는 두 번째 옵션이 있습니다 (아래 참조).
generate_rewrite_rules를 사용하여 작성기베이스
이 메소드를 작성하려면 전역 $ wp_rewrite 클래스가 다시 필요합니다. 그런 다음 새 변수를 설정했습니다. $ new_rules
데이터의 연관 배열을 포함합니다. 아래 예제 코드는 기본 작성자 페이지 섹션을 다시 작성합니다..
함수 generate_author_rewrite_rules () 글로벌 $ wp_rewrite; $ new_rules = array ( "writer / ([^ /] +) /?"=> "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;
그러나 여러 페이지와 RSS 피드를 포함 시키려면 어레이를 강화할 수 있습니다. 너무 복잡 할 수있는 연관 배열 데이터를 푸시하는 PHP 함수를 생성 할 수 있습니다. 데이터 블록을 쉼표로 분리하여 배열에서 별도의 엔티티로 작동 할 수도 있습니다. functions.php 테마 파일로 작성된 업데이트 된 코드를 다시 확인하십시오..
함수 generate_author_rewrite_rules () 글로벌 $ wp_rewrite; $ new_rules = array ( "writer / ([^ /] +) /?"=> "index.php? author_name =". $ wp_rewrite-> preg_index (1), 작가 / ([^ /] +) / 페이지 $ wp_rewrite-> preg_index (1). "& page =". $ wp_rewrite-> preg_index (2), / "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?"=> "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =" $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?"=> "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;
이 두 가지 방법 중 어느 것도 원래의 다시 쓰기 규칙을 삭제할 때까지 작동하지 않는다는 것을 기억하십시오. 이러한 기능을 변경할 때마다이 작업을 수행해야하지만, 이후에 새 규칙이 무기한 보관됩니다.
다시 쓰기 규칙 플러시
URL 다시 쓰기 코드를 업데이트 할 때마다 변경 내용이 즉시 적용되지 않습니다. 새로운 코드가 추가 될 수 있도록 .htaccess 다시 쓰기 규칙을 플러시해야합니다. 그러나 모든 페이지 초기화시이 작업을 수행하는 것은 데이터베이스에 쓰고 .htaccess 파일을 하드 새로 고치기 때문에 매우 낭비입니다.
더 좋은 방법은 관리자 패널에서 퍼머 링크 페이지에 액세스하고 변경 사항을 다시 저장하는 것입니다. 이것은 항상 flush_rewrite_rules를 호출하므로 프론트 엔드에서로드 문제를 겪고있는 사용자에 대해 걱정할 필요가 없습니다. 페이지를 다시 저장하고 시스템의 모든 규칙을 업데이트하는 데 한 번만 걸립니다. 그러나 이것이 작동하지 않는다면 $ wp_rewrite-> flush_rules ();
비 WP 규칙 사용
내부 $ wp_rewrite
우리는 수십 개의 속성에 액세스 할 수 있습니다. 더 중요한 옵션 중 하나는 다음과 같습니다. $ wp_rewrite-> non_wp_rules
index.php 파일에 도달하지 않는 리디렉션 배열을 수집합니다..
이것은 실제로 WordPress 플러그인 개발에서 가장 자주 사용됩니다. 특정 맞춤 URL 유형 (예 : / calendar / june-2012 /
)를 웹 사이트의 백엔드로/wp-content/plugins/calendarplug/myscript.php
). 물론 플러그인과 다른 사용자 정의 다시 쓰기 규칙의 연관 배열에는 더 많은 용도가 있습니다. 아래 컨텍스트에서 훌륭한 예를 제공했습니다..
테마 파일 마스킹
이것은 WordPress 토론 게시판에서 자주 볼 수있는 일반적인 제안입니다. 이상적으로는 파일 내부의 일부 파일을 참조하고 싶습니다. / wp-content / themes / mytheme /
폴더를 더 우아한 URL로 대체하십시오. 디렉토리 구조를 변경하려면 WordPress 재 작성이 필요합니다..
WordPress의 내부 재 작성 시스템은 항상 콘텐츠를 단일 라우팅 파일로 푸시합니다. 디폴트의 경우, 여분의 쿼리 캐릭터 라인 데이터와 함께 index.php를 사용합니다. 그러나 우리의 표준 템플릿 디렉토리를 숨기기 위해서 (/ wp-content / themes / mytheme / *
) 우리는 많은 다른 파일들을 보여줄 필요가있을 것이다..
add_action ( 'generate_rewrite_rules', 'themes_dir_add_rewrites'); 함수 themes_dir_add_rewrites () $ theme_name = 다음 (explode ( '/ themes /', get_stylesheet_directory ())); 전역 $ wp_rewrite; $ new_non_wp_rules = array ( 'css /(.*)'=> 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)'=> 'wp-content / themes '/ theme /. / wordpress-urls-rewrite / (. *)'=> 'wp-content / themes /'. $ theme_name. '/ images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
나는 새로운 함수를 썼다. themes_dir_add_rewrites ()
이 긴 URL에서 모든 주요 콘텐츠를 가져 와서 백엔드에서 리디렉션 할 수 있습니다. 우리가 $ wp_rewrite 클래스의 다른 신비한 속성을 사용하고 있음을 주목하라. non_wp_rules
. 문서에 따르면, 이것들은 WP의 index.php 파일로 보내지 않는 규칙이며 서버 측에서 처리 될 것입니다.
이러한 비 WP 규칙에 대해 매우 중요한 점은 이전 URL 메서드를 매우 쉽게 관리 할 수 있다는 것입니다. 연결을 방해하는 것은 없습니다.
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
그러나 참조 할 수 있으면 훨씬 더 멋지게 보입니다.
/images/wordpress-urls-rewrite/logo.jpg
대신에.
유용한 도구 및 플러그인
자신 만의 예쁜 URL을 코딩 할 때 활용할 수있는 몇 가지 도구가 있습니다. 이 과정은 이해하기가 매우 어렵 기 때문에 2 주 동안 고생하고 있다면 낙심하지 마십시오. 더 많은 시간을 연습하면서 콘텐츠가 더 쉽게 얻을 수 있다고 생각합니다..
그러나 이러한 편리한 재 작성 도구 및 플러그인을 확인해보십시오. 당신은 아마 그것들 모두를 필요로하지는 않을 것이지만, WP 재 작성을 다루는 거대한 개발자 기반을 찾는 것이 좋습니다..
Monkeyman Rewrite Analyzer
처음으로 규칙을 다시 작성하면이 플러그인이 반드시 있어야합니다. 웹 사이트의 규칙을 실제로 변경하지는 않으며 코드를 테스트하고 리디렉션이 어떤 페이지로 이동하는지 확인할 수 있습니다. 모든 맞춤 게시 유형에 대한 맞춤 검색어 변수를 테스트 할 수 있습니다..
AskApache RewriteRules 뷰어
이는 위의 플러그인과 비슷하지만 자신의 규칙을 테스트 할 수는 없다는 점이 다릅니다. 대신이 플러그인은 웹 사이트의 기본 WP 규칙과 리디렉션되는 위치를 모두 표시합니다. 여기에는 다음과 같은 주요 특성이 모두 포함됩니다. $ wp_rewrite
퍼머 링크 설정 및 페이지 / 카테고리 / 태그 기반과 같은.
WP htaccess 컨트롤
여기서 새 페이지 리디렉션을 만들기위한 다른 규칙 집합이 있습니다. 플러그인에는 작성자 기반, 페이지 기반과 같은 변수를 편집 할 수있는 자체 관리 패널이 있으며 심지어 자신 만의 사용자 정의 .htaccess 규칙을 추가 할 수 있습니다.
이 방법은 wp_rewrite를 사용하여 자신의 빌드와 비교됩니다. 그러나 실제로 웹 서버를 알고 있고 .htaccess에 직접 쓰기가 편한 기술자에게는 더 쉬울 수 있습니다..
다시 쓰기 규칙 테스터
이것은 실제로 WordPress 플러그인이 아니지만, 파일을 계속 유지하는 데 유용한 도구입니다. .htaccess 파일을 수정하지 않고도 다시 쓰기 규칙을 복사하여 웹 사이트에 대해 테스트 할 수 있습니다. 웹에서 라이브를 시작하기 전에 구문에서 버그를 제거하는 완벽한 방법입니다..
DW Rewrite
DW Rewrite는 설치 후 즉시 3 개의 예쁜 URL을 생성하는 매우 간단한 플러그인입니다. 기본적으로 관리자, 로그인 및 등록 링크가 다음으로 변경됩니다. /관리자
, /로그인
, 과 /레지스터
각기.
여러 작성자가있는 블로그에 대한 빠른 수정이 필요한 경우 유용 할 수 있습니다. 그것은 당황스럽게 복잡하게 얽힌 WordPress 등록 링크를/wp-login.php?action=register
).
결론
이 튜토리얼이 WordPress 재 작성에 대해 생각할 수있는 몇 가지 예를 제공 할 수 있기를 바랍니다. CMS는 매우 인기가 있으며 개발자는 매일 새로운 기능을 만들어냅니다. 자신의 URL을 사용자 정의하는 것은 사용자 기반 기능의 큰 부분입니다. 기본 옵션과 비교하여 웹 사이트에 고유 한 존재 및 브랜딩을 제공합니다..
다시 쓰기 규칙에 문제가있는 경우 손상을 취소하는 것이 어렵지 않습니다. 간단히 기능 코드를 삭제하고 .htaccess 규칙을 삭제하면 변경된 사항이없는 것처럼 보입니다. 이 주제에서 찾을 수있는 다른 유사한 기사를 확인하십시오. 질문이나 의견이 있으시면 게시물 토론 영역에서 의견을 공유 할 수 있습니다..