내 WordPress 사이트의 포트폴리오는 입니다. 포트폴리오 섹션과 항목은 내가 만든 맞춤 플러그인을 통해 관리됩니다. www.mysite.com/portfolio/my-cool-photo
과 같은 개별 항목에 액세스하고 ?portfolio_item=my-cool-photo
과 같은 쿼리 문자열에 "my-cool-photo"를 넣고 코드에서 읽을 수 있도록하고 싶습니다.WordPress에 사용자 정의 다시 쓰기 규칙 추가
function add_rewrite_rules($wp_rewrite) {
$new_rules = array(
'portfolio/(.+)/?$' => 'index.php?&portfolio_item=$1'
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');
function query_vars($public_query_vars) {
$public_query_vars[] = "portfolio_item";
return $public_query_vars;
}
add_filter('query_vars', 'query_vars');
이 배열 OK로 재 작성 규칙을 추가 플러그인 활성화 PHP 파일에서
나는이 코드를 가지고있다. 문제는 아무것도하지 않는 것입니다. 내가www.mysite.com/portfolio/testing/
에 갈 때 나는 "다소 창피하다, 안 그래?" WordPress 404 오류 페이지. 분명히 리디렉션 쿼리 문자열이 작성되지 않도록, 작동하지 않는,하지만 그냥 내가 이런 짓을 확인 :
global $wp_query, $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
$searchKey = $wp_query->query_vars['portfolio_item'];
} else {
$searchKey = $_GET['portfolio_item'];
}
을 ... 과연 쿼리 문자열이 전달지고 있지 않습니다.
내가 누락 된 자료가 있습니까?
http://codex.wordpress.org/Function_Reference/flush_rewrite_rules
이당신은 $hard
매개 변수 true
로 세척하도록 선택할 수 있습니다, 그리고 당신은 당신의 재 작성 규칙을 볼 수 있어야합니다 : 당신은 워드 프레스가 규칙을 다시 업데이트 한 후
로 실행됩니다. 그게 아무것도 영향을 미치지 않았고 내 htaccess 파일은 여전히 기본 WordPress htaccess 파일입니다. – Gavin
대신에'add_rewrite_rule' 함수를 사용해 볼 수 있습니다 : http://codex.wordpress.org/Rewrite_API/add_rewrite_rule – Ygg
재 작성이 실제로'add_rewrite_rule'을 사용하고 있다고 생각합니다. 문제는 WordPress가 mysite.com/portfolio/abcdefg/를/portfolio/page의 일부로 인식하지 못하기 때문에 "이건 다소 창피합니다. 그렇지 않습니까?" 오류 화면. 아직 포트폴리오 페이지를로드해야한다는 것을 "알리려면"해야 할 일이 있습니까? – Gavin